【发布时间】:2019-07-17 22:13:04
【问题描述】:
我正在使用 Angular 2 应用程序和 NodeJS API。当我在 localhost 中拥有 API 时,一切正常,但我将 NodeJS API 发布到了真实服务器,当我尝试访问 API 的任何方法时,它给了我这个错误:
对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头
我在 stackoverflow 中检查了其他主题的一些答案,但对我没有任何帮助。
我已经剪掉了:
app.use(require("cors")());
app.use(function(req, res, next) {
res.setHeader("Access-Control-Allow-Origin", "*");
res.setHeader(
"Access-Control-Allow-Headers",
"Origin, X-Requested-With, Content-Type, Accept,responseType"
);
res.setHeader(
"Access-Control-Allow-Methods",
"POST, GET, PATCH, DELETE, OPTIONS"
);
next();
});
所以我在 Access-Control-Allow-Origin 标头中有“*”,为什么我收到我的标头中没有此标头的错误?
提前致谢。
【问题讨论】:
-
您正在使用其他一些 CORS 模块,并手动设置标题?解决这个问题,并向我们展示完整的请求/响应。
-
正如另一条评论所说,您似乎正在尝试同时使用 CORS 中间件并自己设置标头,您不应该自己设置标头,而是使用中间件。这是有关设置的文档的link。由于 Angular 的飞行前检查,您喜欢遇到问题。
-
@Brad 所以我应该删除我手动插入的标题并留在 app.use(require("cors")());?
-
@technogeek1995 我已经尝试过该解决方案并删除了我手动设置的标题,但错误是相同的。