You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue/Nuxt项目中Fetch/Axios发GET请求遇302重定向失败但Postman和浏览器正常

问题原因

你遇到的报错是两个核心限制共同导致的:

  • 浏览器同源策略限制:地址栏直接访问、Postman发起请求不受同源策略约束,所以可以正常处理302重定向并拿到结果;但前端页面发起的AJAX请求受跨域规则限制,GitHub的公开页面/资源默认没有配置允许你站点域名的CORS响应头,所以请求直接被浏览器拦截,抛出ERR_FAILED错误。
  • 重定向配置问题:默认情况下fetch、axios的浏览器端版本自动跟进重定向的逻辑会受跨域规则限制,跨域场景下即使拿到302响应,后续重定向请求也会被拦截。

可行解决方案

方案1:通过Nuxt服务端代理转发请求(最适配你的技术栈,推荐)

Nuxt框架支持服务端代理,服务端发起的请求不受浏览器同源策略限制,可以正常跟进重定向:

  • 若你使用Nuxt2,先安装@nuxtjs/proxy模块,再在nuxt.config.js中添加如下配置:
export default {
  modules: ['@nuxtjs/proxy'],
  proxy: {
    '/github-proxy': {
      target: 'https://github.com',
      pathRewrite: { '^/github-proxy': '' },
      changeOrigin: true,
      followRedirects: true
    }
  }
}

前端发起请求时,把原来的https://github.com/xxx格式的URL替换为/github-proxy/xxx即可正常拿到结果。

  • 若你使用Nuxt3,直接在server/api目录下新建转发接口,用服务端内置的$fetch发起请求,自动跟进重定向后将结果返回给前端即可。

方案2:调整请求参数(仅适用于目标地址支持CORS的场景)

如果请求的目标地址已经配置了允许你站点跨域访问,可手动指定重定向相关参数:

  • Fetch配置:
fetch(inputURL, {
  method: 'GET',
  redirect: 'follow'
})
  • Axios配置:
axios.get(inputURL, {
  maxRedirects: 5
})

注意该方案对GitHub公开默认资源不生效,因为GitHub没有配置允许第三方站点跨域请求普通页面/资源的CORS头。

优化建议

如果你是要获取GitHub仓库的相关数据,建议直接调用GitHub官方开放的REST API,接口直接返回结构化JSON数据,不会出现302重定向问题,同时支持携带身份token提高请求频率限制。


内容的提问来源于stack exchange,提问作者BATMAN_2008

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 19:24:03