配置使用CORS的Express不接受CORS



我在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());

to no avail

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

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

安装然后在下面使用as

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

最新更新