CORS需要​​浏览器​​和​​服务器​​同时支持。

目前,所有浏览器都支持该功能,IE浏览器不能低于IE10。

因此,实现CORS通信的关键是服务器。只要服务器实现了CORS接口,就可以跨源通信。


  • 简单请求
  • 非简单请求,会出现"预检"请求

通用配置

//指定允许其他域名访问
'Access-Control-Allow-Origin: *'//一般用法(*,指定域,动态设置),3是因为*不允许携带认证头和cookies
//是否允许后续请求携带认证信息(cookies),该值只能是true,否则不返回
'Access-Control-Allow-Credentials:true'
//预检结果缓存时间,也就是上面说到的缓存啦
'Access-Control-Max-Age: 1800'
//允许的请求类型
'Access-Control-Allow-Methods: *'
//允许的请求头字段
'Access-Control-Allow-Headers: *'

Nginx配置

location / {

add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Credentials true;
add_header Access-Control-Allow-Methods *;
add_header Access-Control-Allow-Headers *;

if ($request_method = 'OPTIONS') {
return 204;
}
}

如果不成功,可以尝试增加​​always​

add_header Access-Control-Allow-Origin * always;


参考

  1. 没错,就是Access-Control-Allow-Origin,跨域
  2. 跨域资源共享 CORS 详解
  3. nginx 配置add_header ‘Access-Control-Allow-Origin’ ‘*’ 依然存在跨域问题