跨域资源共享 CORS

CORS

Cross-Origin Resource Sharing(CORS)是HTTP在协议层对处理跨域问题给出的方案。在所有现代浏览器中都可以使用CORS来处理跨域,对于不支持的浏览器可以降级使用JSONP方案代替。

配置

https://enable-cors.org/index.html

携带Cookie

跨域ajax请求时默认是不会携带Cookie的,需要设置withCredentials为true。

1
2
3
4
5
6
7
8
9
10
11
var invocation = new XMLHttpRequest();
var url = 'http://bar.other/resources/credentialed-content/';

function callOtherDomain(){
if(invocation) {
invocation.open('GET', url, true);
invocation.withCredentials = true;
invocation.onreadystatechange = handler;
invocation.send();
}
}

注意

  1. preflight

    对于 复杂请求 浏览器会发起预请求,我们可以设置 Access-Control-Max-Age 指定了 preflight 请求的结果能够被缓存多久。这里需要注意的是浏览器不是根据域名来做缓存的,是根绝URL。如果URL或者Query不一样,每次都会发起 preflight

参考

本站采用「署名 4.0 国际」进行许可。