egg+vue+nginx 前后端分离跨域?

发布于 2022-09-11 21:14:10 字数 1320 浏览 17 评论 0

求教各位大神一个问题,我前端用vue 后端用egg.js通过restful api进行请求。egg已经通过cors设置了允许跨域。
但是在部署的时候使用nginx进行了反向代理,但还是会出现跨域的问题。

我觉得是nginx配置的问题。但是不知道该如何解决。

前端vue+axios进行请求:
前端axios的baseUrl配置。必须配置到后端的egg的默认7001端口,否则会有跨域问题。
clipboard.png

后端:宝塔面板+egg+nginx反向代理

#PROXY-START/
location /
{
    expires 12h;
    if ($request_uri ~* "(php|jsp|cgi|asp|aspx)")
    {
         expires 0;
    }
    proxy_pass http://127.0.0.1:7001;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header REMOTE-HOST $remote_addr;
    
    #持久化连接相关配置
    #proxy_connect_timeout 30s;
    #proxy_read_timeout 86400s;
    #proxy_send_timeout 30s;
    #proxy_http_version 1.1;
    #proxy_set_header Upgrade $http_upgrade;
    #proxy_set_header Connection "upgrade";

    add_header X-Cache $upstream_cache_status;
    
    
}

#PROXY-END/

试了如下几种方法:

  1. 在nginx的lisetn serv端添加 add_header Access-Control-Allow-Origin *; 此方法无效
  2. 在反向代理端 设置proxy_set_header 'Access-Control-Allow-Origin' '*'; 会提示我设置了多个cors。

3.http 通过配置baseUrl 到7001端口可以成功
4.https 配置到7001端口同样会提示跨域

好崩溃啊,试了好几个小时也没解决。

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

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

发布评论

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

评论(3

浅唱々樱花落 2022-09-18 21:14:10

反向代理是,将浏览器对 同一域名:端口下的 发送请求, 代理服务器再去请求不同的 域名:端口
举例说明就是 nginx 监听 3000端口。

那么Nginx的配置应该是

listen 3000 #监听3000端口

有人发送请求过来
location /html { #以 /html 开头的连接, 代理前端
    proxy_pass: 前端服务器
}

location /api { #以 /api开头的连接,代理 后台服务器
    proxy_pass: 后台服务器
}

浏览器 访问 localhost: 3000/html/index.html -》 nginx 去 请求前端页面
网页请求 localhost: 3000/api/data -> nginx 去 请求 后台接口
对于浏览器而言,都是请求的 localhost:3000
nginx 代理服务器 会根据其链接的不同, 去请求不同的服务器

遥远的绿洲 2022-09-18 21:14:10

求大神帮忙看一下

ˇ宁静的妩媚 2022-09-18 21:14:10

你这个问题解决了吗?我与你有相同的遭遇!

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