nginx如何解决跨域问题?

邀请回答
提问于 2020-05-08 16:06
313 次浏览
共2个回答

发表评论
  • 陶辉
    2020-06-12 07:49

    有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
    回复
    举报
  • dongchch
    2020-06-11 21:21

      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
    回复
    举报
提问者

黄开健

暂无个人介绍

  • 0

    文章

  • 1

    粉丝

  • 2

    被赞

黄开健
按Enter键发送
您已邀请位用户
版权所有©F5 Networks,Inc.保留所有权利。京ICP备16013763号-5