我在同一台Linux服务器上托管我的express backend REST API和react frontend,我使用HTTP
协议在端口80上使用nginx提供react构建文件,后端使用pm2在远程服务器的端口1210上本地运行。
react的构建文件在/var/www/agpcms/html/
文件夹中,Nginx配置为/etc/nginx/sites-available/agpcms
和/etc/nginx/sites-enabled/agpcms
。
# in /etc/nginx/sites-available/agpcms
server {
listen 80;
server_name localhost;
root /var/www/agpcms/html;
index index.html;
access_log /var/log/nginx/agpcms.com.access.log;
error_log /var/log/nginx/agpcms.com.error.log;
location / {
try_files $uri /index.html =404;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
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;
proxy_set_header Host $host;
proxy_redirect off;
}
}
我遇到的问题是,我可以很好地执行GET请求,但在发送POST请求(如注册)时,我无法从后端获得响应。我尝试过注解/取消注解上面的nginx配置文件,但迄今为止没有运气。我在浏览器工具上得到的错误
在Brave浏览器(Chromium)上,我从xhr
和preflight
请求中得到(failed)
状态,在Firefox上,OPTIONS和POST请求都返回空响应,并将其打印到控制台
on Firefox console
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost:1210/apis/v1/auth/signup.
(Reason: CORS request did not succeed). Status code: (null). [Learn more]
我确信我已经正确地设置了CORS,因为我已经通过暴露端口1210尝试过从浏览器后端处理GET请求。
我在这里错过了什么,使它能够处理POST请求?我目前没有设置https,但我是否需要在https中运行它,以解决这个问题?
任何帮助都非常感谢。谢谢阅读。
1条答案
按热度按时间h9vpoimq1#
原来我必须使用远程服务器的IP地址iidoEe.
x.xx.xx.xxx
而不是localhost
来构建前端,并且还将server_name
更改为这个IP地址。这解决了我的问题。