CORS策略阻止Fetch请求,已尝试Stack Overflow方案仍未解决
解决CORS错误的可行方案
你的问题核心是目标API服务端未配置CORS允许你的域名跨域,这也是你试遍前端方案都无效的原因——CORS是浏览器的安全机制,前端自行添加的跨域相关请求头会被浏览器直接忽略,只有服务端返回的Access-Control-Allow-Origin等响应头才会被认可。
下面是几个实际可行的解决办法:
搭建代理服务器
服务器端请求不受浏览器CORS限制,你可以自己搭一个简单的后端代理,转发请求到目标API。比如用Node.js + Express快速实现:const express = require('express'); const fetch = require('node-fetch'); const app = express(); const port = 3000; // 代理接口 app.get('/api/player-transfers', async (req, res) => { try { const apiResponse = await fetch('https://transfermarkt-api.vercel.app/players/122153/transfers'); const data = await apiResponse.json(); res.json(data); } catch (error) { res.status(500).json({ error: '请求转发失败' }); } }); app.listen(port, () => { console.log(`代理服务运行在 http://localhost:${port}`); });前端代码修改为请求代理接口:
fetch('http://localhost:3000/api/player-transfers', { method: 'GET', headers: { 'accept': 'application/json' }, }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error('Error:', error));开发调试用浏览器插件
如果你只是本地调试,可以安装Chrome的「Allow CORS: Access-Control-Allow-Origin」类插件,临时绕过浏览器的CORS检查。注意:这仅适合开发阶段,不能用于生产环境的用户访问。联系API提供者配置CORS
如果这个API是公开服务,你可以找到它的源码仓库(比如Vercel关联的GitHub项目)提交Issue,请求作者添加CORS配置,允许前端域名跨域访问。
你之前尝试的前端方案(比如自定义请求头、设置withCredentials等),都需要服务端已经配置了基础CORS规则才能生效,现在服务端完全没有返回跨域允许的响应头,所以这些操作自然无效。
内容的提问来源于stack exchange,提问作者Husky7110
相关产品推荐
相关产品推荐

