Rob*_*Rob 6 javascript ajax https jquery
所以,我使用.ajax方法从jQuery调用Web服务.调用该方法的页面是一个HTTPS/SSL页面,但是在进行调用时,jQuery会继续发出HTTP请求并且失败,因为服务器设置为将所有HTTP流量重定向到HTTPS ...所以301错误又回来了.
我已经检查了我的代码一百万次并尝试了一百万种方法来为ajax查询生成url参数.(使用//为亲戚,现在只需将协议https附加到网址的开头.这是我的javascript:
function add_inbound_record(serial_number, pass_fail_value)
{
pfv = pass_fail_value.toUpperCase();
url = location.protocol + "//" + location.hostname + "/inbound/record- inspection/" + serial_number + "/" + pfv;
$.ajax({
url:url,
cache:false,
});
}
Run Code Online (Sandbox Code Playgroud)
因此,当这段代码执行时,我会检查firebug中的url参数,并使用https和正确形成的URL正确显示.但是,当我执行ajax函数时,我在firebug中看到了这个:
301 MOVED PERMANENTLY
192.168.1.9
20 B
192.168.1.9:443
Response Headersview source
Connection keep-alive
Content-Encoding gzip
Content-Length 20
Content-Type text/html; charset=utf-8
Date Wed, 24 Oct 2012 17:33:34 GMT
Location http://192.168.1.9/inbound/record-inspection/011234567890123421000000002995/P/?_=1351100020609
Server nginx/1.1.19
Vary Accept-Encoding
Request Headersview source
Accept */*
Accept-Encoding gzip, deflate
Accept-Language en-us,en;q=0.5
Connection keep-alive
Cookie djdt=hide; csrftoken=sF9RUxrlS6IKURxOryH2d2yT05gMighn; sessionid=9682390da4011e445931643c81be9aae
Host 192.168.1.9
Referer https://192.168.1.9/fingerprint/inspect/
User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
X-Requested-With XMLHttpRequest
Run Code Online (Sandbox Code Playgroud)
正如您在引用者中看到的那样,协议是HTTPS,但响应头中的位置是HTTP?我不能为我的生活弄清楚为什么请求作为HTTP而不是HTTPS通过网络.301响应是准确的,因为它是作为HTTP进行的,因为网络服务器再次配置为仅允许HTTPS访问.有任何想法吗?
Rob*_*Rob 20
好.我搞砸了这个超过4个小时,一旦我在URL的末尾加了一个斜杠,问题就消失了,一切正常.我不知道为什么.Web服务器/ Web服务不需要斜杠来正常运行,但无论出于何种原因,这就是"修复"它的原因.感谢有用的评论家伙.