美文网首页系统性能优化
使用 nginx 配置跨域发现的令人崩溃的问题

使用 nginx 配置跨域发现的令人崩溃的问题

作者: 闲看热闹的 | 来源:发表于2021-12-31 02:18 被阅读0次

    近期在处理服务的跨域问题,参考网上的文章,使用了如下配置

    location /api {
        if ($request_method = 'OPTIONS') {
            return 204;
        }
        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' 'DNT,Authorization,Accept,Origin,Keep-Alive,User-Agent,X-Mx-ReqToken,X-Data-Type,X-Auth-Token,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
        # 本地需要转发的服务    
        proxy_pass http://localhost:5566/;
    }
    

    该配置在本地测试可以解决跨域问题,放到服务器上无论如何都不生效,服务器上的 Nginx 是与其它项目共用的,正常出现跨域的情况下会发出一个 OPTIONS 请求,请求通过跨域后再继续发起原始请求,如果未配置跨域的情况下 OPTIONS 请求会返回 403,并报跨域错误。
    在反复调整测试无果的时候,查到一篇关于 Nginx 设置禁用 OPTIONS 请求的文章

    if ($request_method ~* OPTIONS) {
            return 403;
    }
    

    看到这个文章,二话不说去 nginx.conf 里查找了下 403,果然发现了罪魁祸首,也不知道哪位大哥加的,配置文件靠前的位置中找到如上面的禁用 OPTIONS 的代码,导致一有 OPTIONS 请求进来,直接返回 403,根本没执行到我正常配置了跨域处理的 location 配置,去掉后重启服务一切正常。F***************K,浪费了我好几个小时的时间,以后和别人共用服务时候一定要仔细看好原有配置,以免再掉坑里

    相关文章

      网友评论

        本文标题:使用 nginx 配置跨域发现的令人崩溃的问题

        本文链接:https://www.haomeiwen.com/subject/nrzwqrtx.html