我正在使用 gulp 服务器进行本地前端开发,我连接到的应用程序正在另一台服务器上运行,包括前端和后端。
gulp 服务器在 localhost:1340 上运行。api 位于https://aaa.bbb.com/api
我收到以下错误: No 'Access-Control-Allow-Origin' header is present on the requested resource.
所以我尝试使用nginx设置一个反向代理服务器,这样我将在localhost:8001上启动一个nginx服务器,它充当gulp服务器和api之间的连接。
这是来自 nginx.conf 的设置
server { # simple reverse-proxy
listen 8001;
server_name localhost;
# access_log logs/domain2.access.log main;
location / {
proxy_pass http://localhost:1340;
proxy_set_header Host $http_host;
add_header Access-Control-Allow-Origin *;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
}
location /api/ {
proxy_pass https://aaa.bbb.com/api/;
add_header Access-Control-Allow-Origin *;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_redirect off;
}
}
Run Code Online (Sandbox Code Playgroud)
但是发生的情况是,当我指向 localhost:8001 时,我仍然收到 cors 错误,它只是传递了 gulp 服务器内容。当我指向 localhost:8001/api/ 它传递外部服务器的内容,前端部署在那里。
我需要的行为是我的本地 ui 指向外部服务器,以便我可以看到我在 ui 中本地所做的更改。有一个在禁用安全性的情况下使用 chrome 的解决方法,但这意味着我无法检查其他浏览器是否有我所做的更改。
任何帮助/想法将不胜感激。
我遇到了完全相同的问题并偶然发现了这个问题(没有答案),所以我只是想为什么不试一试。它直接为我工作。没有标头设置或任何东西——只是将 proxy_passes 添加到默认的 nginx 配置中。这就是我所做的:
server {
listen 8001;
server_name localhost;
location / {
proxy_pass http://127.0.0.1:1340;
}
location /api {
proxy_pass https://aaa.bbb.com/api;
}
}
Run Code Online (Sandbox Code Playgroud)
我怀疑您设置的一两个标题导致了问题。您只需要一个直接的反向代理,这样浏览器就不会怀疑它背后有多个域。
| 归档时间: |
|
| 查看次数: |
6583 次 |
| 最近记录: |