Node.js 为什么CORS策略会从我的API中阻止我的ip?

Node.js 为什么CORS策略会从我的API中阻止我的ip?,node.js,express,cors,angular5,Node.js,Express,Cors,Angular5,当我在生产中向我的api发出请求时,我得到了这个错误 Access to XMLHttpRequest at 'http://...:300/api/ext/companies/sort=%22code%22:-1&limit=1' from origin 'http://...:90' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It

当我在生产中向我的api发出请求时,我得到了这个错误

Access to XMLHttpRequest at 'http://...:300/api/ext/companies/sort=%22code%22:-1&limit=1' from origin
'http://...:90' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status.
我如何解决这个问题

我的前端是用角度5开发的

我的api是在nodejs中开发的,这是我的配置

app.use((req, res, next) => {
  res.header('Access-Control-Allow-Origin', '*');
  res.header('Access-Control-Allow-Headers', 'X-API-KEY, Origin, X-Requested-With, Content-Type, Accept, Access-Control-Request-Method, Authorization, Database');
  res.header('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, DELETE');
  res.header('Allow', 'GET, POST, OPTIONS, PUT, DELETE');

  next();
});
安装这个

而不是:

const express = require("express");
试试这个:

const express = require("express").use("*", cors());
并将其删除:

app.use((req, res, next) => {
  res.header('Access-Control-Allow-Origin', '*');
  res.header('Access-Control-Allow-Headers', 'X-API-KEY, Origin, X-Requested-With, Content-Type, Accept, Access-Control-Request-Method, Authorization, Database');
  res.header('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, DELETE');
  res.header('Allow', 'GET, POST, OPTIONS, PUT, DELETE');

  next();
});

这是因为在某些情况下(并非所有情况下),浏览器将拒绝接受Access Control Allow Origin值*。CORS在服务器上的正确实现是检查来源和引用字段,如果存在,将值放回访问控制允许来源(在这里,您可以检查请求的网站是否确实被允许与您交谈)。Ncmettin的答案为您提供了一个很好的插件,它可以在express中自动为您实现这一点,但这就是原因所在