(nginx系列) 第二篇:跨域配置

hcwei 2020年06月10日 429次浏览

什么是跨域

跨域简单理解就是从域名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