什么是跨域
跨域简单理解就是从域名A请求非域名A的各类资源,只要与域名A的域名、端口以及协议有不同就都会视为跨域,跨域资源无法正常返回请求,并抛出403错误。
跨域配置
location / {
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
if ($request_method = 'OPTIONS') {
return 204;
}
...省略
}
-
Access-Control-Allow-Origin:
告诉服务器可以接受跨域请求,*表示接受所有的跨域请求,也可设置成指定的域名。 -
Access-Control-Allow-Methods:
配置服务器可接受的跨域请求方法。 -
Access-Control-Allow-Headers:
为了防止Content-Type不被支持而报错。 -
OPTIONS返回204:
对于非GET方法的跨域请求会发送"预检请求",需要使用"OPTIONS"方法,所以需要服务器允许该方法。
跨域原理请参考:
https://segmentfault.com/a/1190000012550346?utm_source=tag-newest
http://www.ruanyifeng.com/blog/2016/04/cors.html