Express 配置为使用 CORS 不接受 CORS

Posted

技术标签:

【中文标题】Express 配置为使用 CORS 不接受 CORS【英文标题】:Express configured to use CORS does not accept CORS 【发布时间】:2021-05-03 16:48:04 【问题描述】:

我在 Express 上遇到了一些奇怪的事情。我有一个接收日志数据并将其推送到 postgres 数据库的端点,但我在请求时收到此错误:

Access to XMLHttpRequest at 'https://myserver.com/log' from origin 'https://myorigin.io' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

这没有任何意义,因为我已将 express 应用程序配置为接受 CORS,并且看起来接受了选项请求?这是相关的服务器端代码

app.use(function (req, res, next) 
  res.header("Access-Control-Allow-Origin", "*");
  res.header(
    "Access-Control-Allow-Headers",
    "Origin, X-Requested-With, Content-Type, Accept"
  );
  next();
);

app.use(express.json());

这是请求

$.ajax(
    type: "POST",
    url: "https://myserver.com/log",
    data: JSON.stringify( "username": "test", "json": a: 1),
    dataType: 'json',
    contentType: 'application/json'
)

我试过了

app.use(cors())

app.use(cors());
app.options("*", cors());

无济于事。

我在这里遗漏了什么明显的东西吗?

【问题讨论】:

【参考方案1】:

您是否安装了cors npm 模块并导入到您的 server.js 或 index.js 文件中。理想情况下,您应该通过npm install -save cors 安装

然后如下使用

var express = require('express');
var cors = require('cors');  // from cors npm module
var app = express();
app.use(cors());

【讨论】:

是的,我也尝试过使用该方法,但它产生了同样的错误。

以上是关于Express 配置为使用 CORS 不接受 CORS的主要内容,如果未能解决你的问题,请参考以下文章