CORS请求中Referrer检查到底有没有用?

爱学习的子斌 阅读 2

我最近在做前端调用后端API,遇到CORS问题。后端同事说他们加了Referrer检查来防止跨域请求,但我听说这并不安全?我自己试了一下,发现即使设置了Referer,浏览器还是会因为CORS策略拦掉请求。

比如我这样发请求:

fetch('https://api.example.com/data', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({ msg: 'hello' })
})

结果控制台报CORS错误,但网络面板里看到请求其实发出去了,只是响应被浏览器拦截了。那后端做Referrer检查还有意义吗?是不是完全防不住恶意请求?

我来解答 赞 0 收藏
二维码
手机扫码查看
1 条解答
程序员启腾
CORS和Referrer检查是两码事,但确实都跟安全相关。你遇到的CORS错误是因为后端没有正确配置跨域策略,跟Referrer没关系。

先说CORS,你需要让后端设置正确的 Access-Control-Allow-Origin 响应头,允许你的前端域名访问才行。比如:

if (origin === 'https://your-frontend.com') {
response.setHeader('Access-Control-Allow-Origin', origin);
}


至于Referrer检查,它确实能增加一点安全性,但不能完全依赖它防止恶意请求。因为Referrer是可以被伪造的,特别是一些低版本浏览器或者自定义客户端请求。

如果要加Referrer验证,建议用正则表达式严格匹配来源域名,记得转义特殊字符。不过别指望它能防住所有攻击,最好还是结合其他手段,比如JWT认证、CSRF token这些。

总的来说,解决CORS问题得从源头来,把跨域配置做好。Referrer检查可以作为额外的安全层,但别把它当成主要防线。累死我了,每次遇到这种跨域问题都要解释半天。
点赞
2026-03-29 20:01