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的主要内容,如果未能解决你的问题,请参考以下文章
使用 express 配置 CORS 并使用 axios 在前端发出请求