CORS问题:No' Access-Control-Allow-Origin'标头出现在请求的资源

时间:2016-02-10 13:21:23

标签: node.js post xmlhttprequest cors

var enableCORS = function(req, res, next) {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization, Content-Length, X-Requested-With');

// intercept OPTIONS method
if ('OPTIONS' == req.method) {
  res.send(200);
}
else {
  next();
}
};
app.use(enableCORS);

我发现在服务器端使用以下代码段,但是当我尝试POST时,我收到错误No' Access-Control-Allow-Origin'标头出现在请求的资源上。

1 个答案:

答案 0 :(得分:4)

我只使用以下一行:

res.header("Access-Control-Allow-Origin", "*");

它有效。你有可能在发送标题之前打印任何其他内容吗?标头必须先发送。中间件代码应该优先于其他任何东西。

你确定代码被执行了吗?做一些'console.log'打印以确保调用enableCORS

最后,使用chrome开发人员工具(或任何等效工具)查看从服务器返回的标头。对于chrome,请转到network =>有问题的请求=> headers =>响应标头,并确保CORS标头在那里。

<强>更新 尝试使用以下内容(取自here):

res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE'); # OPTIONS removed
res.header('Access-Control-Allow-Headers', 'Content-Type');