React调用Beehiiv API遭CORS策略拦截,求助问题原因
问题原因及解决办法
核心原因
- 你在请求头里加的
Access-Control-Allow-Origin: *完全无效——这个是服务器返回给浏览器的响应头,不是客户端发送的请求头,浏览器不会把它当作跨域校验的依据。 - Beehiiv API的服务器没有配置允许
http://localhost:3000这个来源的跨域请求,所以浏览器收到响应后,发现没有符合要求的Access-Control-Allow-Origin头,直接拦截了数据。 - 其他API能正常调用,是因为它们的服务器配置了允许你的前端域名(或通配符
*)的跨域响应头。
解决办法
后端代理(推荐,适配生产+开发环境)
让前端请求先发到自己的代理/后端服务,再由代理去调用Beehiiv API——后端之间的请求不受浏览器CORS限制。
比如在React项目的package.json里添加代理配置:"proxy": "https://api.beehiiv.com"然后修改请求代码(删掉无效的请求头):
async function makeRequest(){ const fetchOptions = { method: 'get', headers: { "X-ApiKey": '<MY API KEY>', "Content-Type": "application/json" }, } fetch('/v1/publications', fetchOptions) .then(response => response.json()) .then(data => console.log(data)) } makeRequest();生产环境需要搭建简单的后端服务(比如Node.js/Express)完成代理转发。
检查API控制台配置
登录Beehiiv开发者后台,查看是否有“跨域域名白名单”类的设置,若有则添加http://localhost:3000(上线后替换为正式域名),服务器会自动返回正确的CORS响应头。开发环境临时绕过(仅本地调试用)
使用Chrome跨域插件(如Allow CORS: Access-Control-Allow-Origin)临时关闭浏览器的CORS校验,但该方法不能用于生产环境。
内容的提问来源于stack exchange,提问作者simplon78
相关产品推荐
相关产品推荐

