我想允许我的服务器让两个不同的域读取数据而不会出现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。我不想使用'*',因为它太自由了。
答案 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
}
标题只需要原点的一个值或通配符,这就是它不适合你的原因