Nginx - 即使添加了指令“访问控制允许来源”后,请求仍会记录错误

Nginx - 即使添加了指令“访问控制允许来源”后,请求仍会记录错误

我正在尝试在我的 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。这样,所有响应都会获得正确的标头。

相关内容