【发布时间】:2015-01-15 06:32:50
【问题描述】:
如何以简化的方式允许 CORS 使用多个域。
我有
cors: {
origin: "www.one.com";
}
app.all('*', function(req, res, next) {
res.header("Access-Control-Allow-Origin", cors.origin);
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});
这在origin 中只提到一个域时有效
但是,如果我想将 origin 作为域数组,并且我想允许原始数组中的所有域使用 CORS,我就会有这样的东西 -
cors: {
origin: ["www.one.com","www.two.com","www.three.com"];
}
但问题是下面的代码不起作用 -
app.all('*', function(req, res, next) {
res.header("Access-Control-Allow-Origin", cors.origin);
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});
如何让res.header 通过cors.origin 获取一系列域?
【问题讨论】:
-
用“*”代替一两个域有什么问题?
-
* 不会放置任何 CORS 过滤器。 * 基本上会允许我显然不想要的所有域。
-
记住 cors 只影响浏览器,所以安全性与 cors 无关。
-
同意,但是放 * 是个好习惯吗?
-
@dandavis 您的 cmets 是 5 年前制作的,因此您的观点可能已经改变,但对于未来的读者来说,CORS 是关于安全性的。如果您使用 cookie,这是防止跨站点请求伪造的第一道防线(这就是浏览器默认阻止跨源请求的原因)。 “*”策略意味着任何站点都可以作为您的用户提出请求(假设没有其他 CSRF 缓解措施)。如果该用户是您服务的管理员,恶意网站可能会造成很大破坏。
标签: javascript node.js express cors