CORS 配置用通配符 * 会有安全风险吗?

Top丶东景 阅读 8

我们后端为了方便开发,把 CORS 的 Access-Control-Allow-Origin 设成了 *,现在上线前有点担心。听说这样会让任何网站都能跨域请求我们的 API,是不是真的有风险?

特别是我们的接口会返回用户敏感数据,比如个人信息和订单记录。虽然前端是自家域名,但怕别人写个恶意网页偷偷调用我们的接口。

后端用的是 Express,现在的配置大概是这样的:

app.use((req, res, next) => {
  res.header('Access-Control-Allow-Origin', '*');
  res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization');
  next();
});

有没有办法既支持多域名又不开放给所有人?

我来解答 赞 4 收藏
二维码
手机扫码查看
1 条解答
Dev · 玉曼
懒人方案:别用通配符,直接在代码里检查请求来源域名,只允许你信任的几个。像这样:

const allowedDomains = ['https://yourdomain.com', 'https://anotherdomain.com'];
app.use((req, res, next) => {
const origin = req.headers.origin;
if (allowedDomains.includes(origin)) {
res.setHeader('Access-Control-Allow-Origin', origin);
}
res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization');
next();
});


这样既解决了安全问题,又不用每个域名都单独配置。搞定收工。
点赞
2026-03-25 22:00