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 'GET, POST, OPTIONS'; add_header Access-Control-Allow-Headers 'token,DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,XRequested-With'; if ($request_method = 'OPTIONS') { return 204; } }
如果不成功,可以尝试增加always
add_header Access-Control-Allow-Origin * always;
参考