Code。为什么
$.ajax({
type : "get",
url : "http://www.facebook.com",
success: function(data){
console.log(data);
}
});
有效,
$.ajax({
type : "get",
url : "http://www.google.com",
success: function(data){
console.log(data);
}
});
在浏览器控制台上抛出着名的XMLHttpRequest cannot load
同源策略异常!
为什么呢?我想这取决于浏览器?
答案 0 :(得分:8)
http://www.facebook.com
发送301 Moved Permanently
响应,重定向到https://www.facebook.com
。
似乎重定向导致请求比完全跨域失败更安静地失败。但是,两个请求都失败。
修改强>
如果响应的HTTP状态代码为301,302,303,307或308 ...
- 将请求网址设置为Location标头传送的网址。
- 如果请求URL的来源和来源是相同的来源,则在遵守相同来源请求事件规则的同时透明地遵循重定向。
- 否则,请遵循跨源请求步骤并终止此算法的步骤。
醇>
文本“透明地遵循重定向”意味着Ajax应将301重定向的目标视为原始目标。但是,在执行重定向时,将针对新目标原点重新检查同源策略。
目标域必须与请求脚本具有相同的来源,或者它必须使用允许请求来源访问的CORS头进行响应。
答案 1 :(得分:1)
服务器(Facebook,谷歌等)允许跨域加载内容。这称为跨源资源共享。要在服务器上启用CORS,请在回复中提供此标头:Access-Control-Allow-Origin: *
。
您无法更改您不拥有的服务器的行为。