为什么我的跨域请求在Chrome里正常,但Firefox报CORS错误?

司徒硕辰 阅读 82

最近在做前后端分离项目时遇到奇怪的问题:XMLHttpRequest请求后端接口,在Chrome能正常获取数据,但Firefox却报Cross-Origin Request Blocked错误。我已经在后端设置了Access-Control-Allow-Origin: *,还试过用浏览器CORS插件临时绕过,但生产环境还是不行…

请求头里明明带了Origin: http://my-frontend.com,Firefox的控制台却显示服务器没返回Access-Control-Allow-Origin。难道不同浏览器对预检请求的处理逻辑差异这么大?求大神指点具体排查方向!


// 我的请求代码
fetch('https://api.example.com/data', {
  method: 'GET',
  mode: 'cors'
})
.catch(err => console.log('请求失败:', err));
我来解答 赞 8 收藏
二维码
手机扫码查看
1 条解答
Dev · 建刚
问题出在Firefox对CORS的安全检查更严格,你后端可能漏掉了某些必要头。试试加这些响应头:Access-Control-Allow-Methods: GET, POST, OPTIONSAccess-Control-Allow-Headers: Content-Type。另外确保预检请求(OPTIONS)能正确返回这些头,而不是直接404或空响应。

fetch('https://api.example.com/data', {
method: 'GET',
mode: 'cors',
headers: {
'Content-Type': 'application/json'
}
}).catch(err => console.log('请求失败:', err));


最后检查一下服务器是否正确处理了OPTIONS请求,很多框架默认没开这个。
点赞 10
2026-01-31 11:03