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'标头出现在请求的资源上。
答案 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');