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

Cra*_*hax 4 node.js cors express

我想允许我的服务器让两个不同的域读取数据而不会出现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();
});
Run Code Online (Sandbox Code Playgroud)

但是,当我通过浏览器发送请求时,我得到了错误:

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

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

Vse*_*nin 9

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

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
}
Run Code Online (Sandbox Code Playgroud)

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