Sae*_*ati 47 ajax cross-domain http-headers cors
在http://www.a.com/service.asmx上创建Web服务,并从http://www.b.com向其发送跨域ajax请求.检查Firebug中的标头,或Live HTTP标头或您希望的任何其他插件.
请求标头中没有X-Requested-With HTTP标头字段的跟踪.
但是,如果您从同一域(例如http://www.a.com/about)向同一服务发送ajax请求,您将看到该头字段.
为什么跨域ajax请求省略了X-Requested-With头字段?
更新:我知道JSONP调用本质上不是AJAX调用.因此,在JSONP调用中,您将看不到任何X-Requested-With标头字段.
Rod*_*ira 77
如果您使用jQuery来执行ajax请求,它将不会发送标头X-Requested-With(HTTP_X_REQUESTED_WITH)= XMLHttpRequest,因为它是跨域的.但是有两种方法可以解决这个问题并发送标题:
选项1)在ajax调用中手动设置标头:
$.ajax({
url: "http://your-url...",
headers: {'X-Requested-With': 'XMLHttpRequest'}
});
Run Code Online (Sandbox Code Playgroud)
选项2)告诉jQuery不要使用跨域默认值,因此它会在ajax请求中保留X-Requested-With标头:
$.ajax({
url: "http://your-url...",
crossDomain: false
});
Run Code Online (Sandbox Code Playgroud)
但有了这个,服务器必须允许这些头,然后服务器需要打印这些头:
print "Access-Control-Allow-Origin: *\n";
print "Access-Control-Allow-Headers: X-Requested-With, Content-Type\n";
Run Code Online (Sandbox Code Playgroud)
上面的第一行将避免错误"Access-Control-Allow-Origin不允许原点".
第二行将避免错误"请求标头字段X-Requested-With不允许访问控制允许标头".