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

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;
    }    
阅读 6k
3 个回答

因为你的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";

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

假设,你本地访问页面地址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;
    }   

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题