Nginx反向代理后还是提示跨域会是什么问题?

发布于 2022-09-11 22:10:09 字数 419 浏览 9 评论 0

1、百度上看到很多用反向代理解决跨域的例子自己也试了下,结果axios.get还是提示跨域,不知道是什么问题。
2、代理正常

访问接口:

http://demo.xxxx.cn:12306/api/cross/test1.php?method=get

Nginx配置:

    location ^~ /api/{
        proxy_pass http://127.0.0.1:12306/;
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }    

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

迷途知返 2022-09-18 22:10:09

因为你的nginx没加CORS头,被代理的机器也没有CORS头,提示跨域正常

nginx加一下

add_header "Access-Control-Allow-Origin" "$http_origin";
add_header "Access-Control-Allow-Credentials" "true";
add_header "Access-Control-Allow-Methods" "GET, POST, OPTIONS, DELETE, PATCH, PUT, HEAD";
add_header "Access-Control-Allow-Headers" "DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type";
绝對不後悔。 2022-09-18 22:10:09

因为还是跨不同域啊。
你要理解为什么会产生跨域。
跨域最重要的点是你要访问的站点不是你的,
如果是你站长的话直接去那个站点配置CORS(或者jsonp)就行了。
无论是CORS还是jsonp,都是要服务端支持的。
就因为站点不是你的,无法配置。所以才要设置代理。
而代理站是你自已的所以可以设置CORS。这样就解决了跨域问题。

余生再见 2022-09-18 22:10:09

假设,你本地访问页面地址http://127.0.0.1:12306/index.html,去调接口http://demo.xxxx.cn:12306/api/cross/test1.php?method=get

那Nginx配置:

   location ^~ /api/{
        proxy_pass http://demo.xxxx.cn:12306/api/;
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }   

希望没有暴露我的愚蠢……

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文