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

为何Axios GET请求返回403错误,但在线REST测试工具可正常调用?

Axios请求Spotify API返回403,但在线工具和朋友使用同一Token正常

以下是几个可能的原因和对应的解决方法:

  • 清理Token中的隐藏字符
    你通过getSpotifyToken()获取的Token可能包含空格、换行符这类不可见字符,在线工具粘贴时会自动过滤,但Axios会原样带入请求头。可以在代码中添加清理步骤:

    const spotifyToken = getSpotifyToken().trim();
    

    也可以把console.log输出的Token复制到文本编辑器,检查是否有多余的空白字符。

  • 显式控制Axios请求头
    Axios会自动添加一些默认请求头(比如User-Agent、Accept),部分API对这些头的格式敏感。可以显式指定必要的请求头,禁用默认的自动添加:

    const response = await axios.get(api_url, {
      headers: {
        Authorization: `Bearer ${spotifyToken}`,
        Accept: "application/json",
        "Content-Type": "application/json",
      },
      transformRequest: [(data) => data], // 避免Axios默认的请求转换逻辑
    });
    
  • 检查React Native的网络配置

    • iOS:确认Info.plist中的ATS(App Transport Security)配置允许访问api.spotify.com。如果项目有ATS域名白名单,需要将该域名加入列表。
    • Android:检查AndroidManifest.xml是否声明了网络权限<uses-permission android:name="android.permission.INTERNET" />,同时查看res/xml/network_security_config.xml是否限制了HTTPS请求的域名。
  • 对齐Axios版本
    不同版本的Axios在请求构造、头处理逻辑上可能存在差异。查看朋友项目package.json中的Axios版本,在你的项目中安装相同版本:

    npm install axios@x.x.x
    

    (将x.x.x替换为朋友使用的具体版本号)

  • 验证Token的有效性与权限
    虽然你说在线工具可用,但仍需确认当前Token确实包含user-top-read权限,且所属账号正确。可以调用Spotify的用户信息接口验证:

    const validateToken = async () => {
      try {
        const res = await axios.get("https://api.spotify.com/v1/me", {
          headers: { Authorization: `Bearer ${spotifyToken}` }
        });
        console.log("Token所属用户:", res.data.display_name);
      } catch (err) {
        console.log("Token验证失败:", err);
      }
    };
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 15:10:24