【问题标题】:No 'Access-Control-Allow-Origin' header is present on the requested resource NodeJS API请求的资源 NodeJS API 上不存在“Access-Control-Allow-Origin”标头
【发布时间】: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 我已经尝试过该解决方案并删除了我手动设置的标题,但错误是相同的。

标签: node.js angular cors


【解决方案1】:

只使用中间件

var express = require('express')
var cors = require('cors')
var app = express()

app.use(cors())

more details

【讨论】:

    猜你喜欢
    • 2019-04-10
    • 1970-01-01
    • 1970-01-01
    • 2013-11-29
    • 2014-07-28
    • 2014-01-19
    相关资源
    最近更新 更多