CORS问题:“Access-Control-Allow-Origin”标头不得包含多个值

时间:2017-01-28 13:07:10

标签: node.js express cors

我想允许我的服务器让两个不同的域读取数据而不会出现CORS问题。

因此,我编写了以下代码行(在node.js中):

app.use(function(req, res, next){
   res.header("Access-Control-Allow-Origin", ["http://ServerA:3000", "http://ServerB:3000"]);
   res.header("Access-Control-Allow-Headers", "*");
   next();
});

但是,当我通过浏览器发送请求时出现错误:

  

'Access-Control-Allow-Origin'标头包含多个值   'http://ServerA:3000http://ServerB:3000',但只有一个是   允许。因此不允许来源“http://ServerB:3000”   访问。

我的问题是如何为多个来源定义'Access-Control-Allow-Origin。我不想使用'*',因为它太自由了。

1 个答案:

答案 0 :(得分:8)

您需要使用配置中包含的内容检查当前来源:

let allowedOrigins = ["http://ServerA:3000", "http://ServerB:3000"]
let origin = req.headers.origin;
if (allowedOrigins.includes(origin)) {
    res.header("Access-Control-Allow-Origin", origin); // restrict it to the required domain
}

标题只需要原点的一个值或通配符,这就是它不适合你的原因