且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

跨域资源共享CORS整理

更新时间:2022-08-22 14:24:26

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’ ‘*’ 依然存在跨域问题