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

我想允许我的服务器让两个不同的域读取数据而不会得到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:3000 , http:// ServerB:3000 ”,但只允许有一个值。 原因' http:// ServerB:3000 '因此不被允许访问。

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

你需要检查你在configuration中的当前的起源:

 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 } 

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