CORS的使用方式:
以下均是模拟 从 A. abc.com 发起一个到 B. abc.com 的请求 的场景,即 本次 “跨域” 并非 “大跨”,而是在 根域相同 的情况下,去 请求 不同的子域 。
需求一:能让我跨就行
这也是最简单的需求,在 B 的服务端程序中,增加响应头:
// 使用通配符 * ,表示当前服务端 返回的信息允许所有源访问, 不推荐
header(
'Access-Control-Allow-Origin:*'
);
// 指定可信任的域名来接收响应信息, 推荐
header(
'Access-Control-Allow-Origin:http://A.abc.com'
);
如此一来,一个跨域请求就不会被浏览器的 同源安全策略所阻止了。
需求二:跨过去以后,我还得操作Cookie
Well~ 让我们在 B 的服务端程序中,继续补增响应头:
// 允许携带 用户认证凭据(也就是允许客户端发送的请求携带Cookie)
header(
'Access-Control-Allow-Credentials:true'
);
同时,A 在向 B 发起请求的时候,需要将 XMLHttpRequest 对象的 withCredentials 属性设置为 true,JQuery1.5.1+ 提供了相应的字段,使用方式如下:
$.ajax({
url:”B. abc.com “,
xhrFields:{
withCredentials:true
},
});
整理 关联:
XmlHttpRequest error: Origin null is not allowed by Access-Control-Allow-Origin
解决办法:
1.恳求的url是PHP的,须要PHP中echo:header(””Access-Control-Allow-Origin: *””);
2.html的,须要