在我的应用程序中,我创建了从HTTP到HTTPS的AJAX请求。这意味着我需要CORS。所以我添加一些标题和参数到jQuery.ajax并进行测试。在Firefox中,所有功能都可以正常工作,但Chrome中没有。 Chrome“kill”每个失效请求(OPTIONS)。
jQuery脚本:
$(document).on('click','a.ajax',function(e) { e.preventDefault(); $.ajax(this.href,{ type: 'GET',dataType: 'json',crossDomain: false,headers: {'X-Requested-With': 'XMLHttpRequest'},xhrFields: { withCredentials: true } }); return false; });
HTTP转储:
> OPTIONS /foo HTTP/1.1 > User-Agent: curl/7.29.0 > Host: local.bar.cz > Accept: */* > Access-Control-Request-Headers:accept,origin,x-requested-with > Access-Control-Request-Method:GET > Origin:http://local.bar.cz > < HTTP/1.1 204 < Server: Nginx/1.2.7 < Date: Wed,27 Feb 2013 15:06:54 GMT < Content-Type: text/html; charset=utf-8 < Connection: keep-alive < X-Powered-By: Nette Framework < X-Frame-Options: SAMEORIGIN < Access-Control-Allow-Origin: http://local.bar.cz < Access-Control-Allow-Credentials: true < Access-Control-Allow-Headers: accept,x-requested-with < Access-Control-Allow-Methods: OPTIONS,GET,POST,HEAD <
任何人知道为什么Chrome杀死这个请求?
也许您的https服务器具有不可信证书。如果是这样,请尝试首先使用浏览器访问URL,并接受不可信的连接。