这可能是一个重复的问题,但我无法正确执行此操作。
我在后端启用了CORS(阅读this)。但是,当我尝试通过我的UI服务器点击我的API服务器上的API时,我得到了这个:
Request header field Authentication is not allowed by Access-Control-Allow-Headers in preflight response.
以下是我的代码的一些相关部分:
// enable CORS
app.use(function (req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});
$.ajax({
method: 'GET',
url: ...,
headers: {
Authentication: ...
},
...
});
答案 0 :(得分:2)
您需要明确允许该标头
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authentication");
您最好使用一些现有的CORS模块,因为我不确定您的实施是否100%正确。
我使用这个CORS中间件:
function (req, res, next) {
// CORS headers
res.header("Access-Control-Allow-Origin", YOUR_URL); // restrict it to the required domain
res.header("Access-Control-Allow-Methods", "GET,PUT,PATCH,POST,DELETE,OPTIONS");
// Set custom headers for CORS
res.header("Access-Control-Allow-Headers", YOUR_HEADER_STRING);
if (req.method === "OPTIONS") {
return res.status(200).end();
}
return next();
};
答案 1 :(得分:1)
我建议您使用{/ 3}}模块,如
var cors = require('cors');
// enable CORS
app.use(cors());
并且不要忘记安装
npm install cors --save