如何使用节点服务器处理预检CORS请求?

时间:2018-06-03 06:36:39

标签: node.js cors http-headers preflight

我已经在我的Node服务器中配置了CORs,如下所示。

var originsWhitelist = [
  'http://localhost:4200'     //this is my front-end url for development

];
var corsOptions = {
  origin: function(origin, callback){
        console.log(origin);
        var isWhitelisted = originsWhitelist.indexOf(origin) !== -1;
        console.log(isWhitelisted);
        callback(null, isWhitelisted);
  },
  credentials:true
}

app.use(cors(corsOptions))

我正在从Angular前端发送json数据,但在此期间我收到这样的错误,     选项http://localhost:30000/api/addProfile 0()

我的请求标题是,

Provisional headers are shown
Access-Control-Request-Headers: content-type
Access-Control-Request-Method: POST
Origin: http://localhost:4200
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36

所以,我有其他发布请求,其中我从数据发送multipart /但它工作正常,而此请求发送错误和响应是未知错误。

1 个答案:

答案 0 :(得分:0)

这应该这样做:

app.options('*', cors(corsOptions));

您应该阅读文档:https://github.com/expressjs/cors#enabling-cors-pre-flight

此问题对我来说也很奇怪,因为浏览器不应该为POST请求启动预检。也许我错过了一些关于CORS的东西。