无法设置标头

时间:2016-09-27 10:08:58

标签: node.js express cors

这可能是一个重复的问题,但我无法正确执行此操作。

我在后端启用了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: ...
    },
    ...
});

2 个答案:

答案 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