nginx配置跨域无效

作者: 大海 分类: web前端 发布时间: 2021-11-24 20:10 ė120 views 6没有评论

网上文章大多是教你这样配置的

    add_header 'Access-Control-Allow-Origin' '*';
    add_header 'Access-Control-Allow-Credentials' 'true';
    add_header 'Access-Control-Allow-Methods' 'OPTION, POST, GET';
    add_header 'Access-Control-Allow-Headers' 'trackID,appinsightRpcID,appinsightTrackid,DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization,appid,trackid,uuid,TraceID';

配置后直接访问里面的文件发现也是有效的有配置的请求头,但实际在其他网站使用还是不行。那是因为浏览器会发送一个 options 的预检请求,主要将本次的请求头发送给服务端,若服务端允许,再发送真正的请求,所以 f12 看到,经常会发送两次请求。因为后端代码没有对 options 请求做出处理,导致 options 请求的时候,报 403或405 , 这里 nginx 对 options 的请求直接返回 200,直接允许响应头,即可使得上述失效配置能够生效。

完整配置

   add_header 'Access-Control-Allow-Origin' '*';
    add_header 'Access-Control-Allow-Credentials' 'true';
    add_header 'Access-Control-Allow-Methods' 'OPTION, POST, GET';
    add_header 'Access-Control-Allow-Headers' 'trackID,appinsightRpcID,appinsightTrackid,DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization,appid,trackid,uuid,TraceID';
    if ( $request_method = 'OPTIONS' ) {
        return 200;
    }

本文出自 纳百川,转载时请注明出处及相应链接。

本文永久链接: https://www.bicner.com/1077.html

0

发表评论

邮箱地址不会被公开。 必填项已用*标注

*

Ɣ回顶部