我正在尝试在我的 nodejs 应用程序前运行 nginx(我正在使用 Windows 机器)
我的 NodeJS 应用程序正在 3000 端口运行
我已经在 8070 端口启动了 Nginx
当我试图击中http://本地主机:8070/从浏览器我得到了下面引用的问题
这是我的 Nginx 配置
server {
listen 8070;
server_name localhost;
location / {
access_log logs/access.log;
add_header 'Access-Control-Allow-Origin' '*' always;
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Headers' 'Content-Type,Accept';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE';
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_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_max_temp_file_size 0;
proxy_pass http://my-app/;
proxy_redirect off;
proxy_read_timeout 240s;
}
}
但我仍然收到以下错误
XMLHttpRequest 无法加载 localhost:3000/my-app/api/engineOptions/get。对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。Origin 'http://本地主机:8070' 因此不允许访问。
我是否遗漏了 nginx 配置中有关 Access-Control-Allow-Origin 指令的任何内容?
答案1
这里的问题是,您的 JavaScript 正在向localhost:3000
(即 NodeJS 服务器)请求资源,但该请求的响应中没有任何Access-Control-Allow-Origin
响应。
您应该确保您的 JS 文件发出的所有请求都发往localhost:8070
,也就是您的 nginx。这样,所有响应都会获得正确的标头。