AJAX请求工作正常,但是当我通过beforeSend或headers添加标头时,会发出OPTIONS运行前请求并中止GET请求.
Code: $.ajax({ type: "GET",crossDomain: true,beforeSend: function (xhr) { xhr.setRequestHeader("session",$auth); },url: $url,success: function (data) { $('#something').html(data); },error: function (request,error) { $('#something').html("<p>Error getting values</p>"); } });
类似的AJAX请求没有指定标题(当我添加/修改标题时,会进行OPTIONS调用)
Request GET /api/something?filter=1 HTTP/1.1 Referer http://app.xyz.dj/dashboard Accept application/json,text/javascript,*/*; q=0.01 Accept-Language en-US Origin http://app.xyz.dj Accept-Encoding gzip,deflate User-Agent Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; MASMJS; rv:11.0) like Gecko Host 162.243.13.172:8080 DNT 1 Connection Keep-Alive Cache-Control no-cache
类似服务器响应标头(用于GET请求)
Response HTTP/1.1 200 OK Server Apache-Coyote/1.1 Access-Control-Allow-Origin * Access-Control-Allow-Methods GET,POST,DELETE,PUT,OPTIONS,HEAD Access-Control-Allow-Headers Content-Type,Accept,X-Requested-With Access-Control-Allow-Credentials true Content-Type application/json Transfer-Encoding chunked Date Thu,09 Jan 2014 14:43:07 GMT
我做错了什么?
解决方法
解决了.
感谢@JasonP指点.更改了服务器响应标头
感谢@JasonP指点.更改了服务器响应标头
Access-Control-Allow-Headers:*
特定的
Access-Control-Allow-Headers: Content-Type,X-Requested-With,Session
现在它的工作原理!