回答
收藏
分享
举报
nginx如何解决跨域问题?
提问于2020-05-08 16:06

浏览 672

已修改于2023-03-17 02:11



写下您的回答
发表回答
全部回答(2)

按点赞数排序

按时间排序

有2个解决方案:

1、基于CORS,即Cross-Origin Resource Sharing,解决浏览器端的安全策略问题。又可以细分为2种,一种叫复杂请求,也就是上面dongchch的答案,对于OPTIONS请求的处理,当然后面的proxy_pass是无关的。一种叫简单请求,直接添加Access_Control_Allow-Origin头部就可以了,浏览器会处理的。

具体你可以参见我的这一课:《如何合法的跨域》https://time.geekbang.org/course/detail/100026801-98913

2、用反向代理解决。你可以直接用proxy_set_header等指令,用Nginx代理时模拟非跨域的客户端,访问实际的应用服务器,并修改应用服务器响应中的域名即可。

赞同

2

回复举报

回答于2020-06-12 07:49



回复陶辉
回复

  location /request {

     if ($request_method = 'OPTIONS') {

        add_header Access-Control-Allow-Origin 'https://XXXXX' always;

        add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS' always;

        add_header Access-Control-Allow-Headers 'requestname,signature,signkey' always;

        add_header 'Access-Control-Max-Age' 1728000;

        add_header 'Content-Type' 'text/plain charset=UTF-8';

        add_header 'Content-Length' 0;

        return 204;

      }

     proxy_pass http://127.0.0.1/request;

  }



以上请参考。

赞同

0

回复举报

回答于2020-06-11 21:21



回复dongchch
回复
提问者
黄开健
这家伙很懒还未留下介绍~
0
文章
2
问答
2
粉丝
相关问答

这篇文章有可能有帮助:

https://www.nginx.org.cn/article/298

点赞 0
浏览 406

我重新下载openresty1.19.3.2

同样的操作也成功了,


点赞 0
浏览 774