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

React Native中仅iOS端Axios调用GET API返回401状态码问题

iOS端Axios GET请求返回401(Bearer Token正常但Android无问题)的排查方案
  • 检查请求头的拼写与格式一致性
    确保Authorization请求头的拼写完全正确(注意首字母大写),格式严格为Bearer <token>,无多余空格或大小写错误。可以通过请求拦截器打印实际发送的请求头,对比Android和iOS的差异:

    axios.interceptors.request.use(config => {
      console.log('实际请求头:', config.headers);
      return config;
    });
    
  • 禁用iOS端的GET请求缓存
    iOS的WKWebView默认会缓存GET请求,可能复用过期的Token。在请求中添加缓存控制头强制禁用缓存:

    axios.get('/target-api', {
      headers: {
        'Authorization': `Bearer ${yourToken}`,
        'Cache-Control': 'no-cache, no-store, must-revalidate',
        'Pragma': 'no-cache',
        'Expires': '0'
      }
    });
    
  • 处理Token的特殊字符编码
    如果Token包含+、/、=这类特殊字符,iOS端可能出现编码异常。尝试对Token进行URL编码后再传入请求头:

    const encodedToken = encodeURIComponent(yourToken);
    axios.get('/target-api', {
      headers: {
        'Authorization': `Bearer ${encodedToken}`
      }
    });
    

    注意:需确认后端能正确解码编码后的Token,或提前和后端确认Token的编码要求。

  • 升级Axios版本并排查WebView限制
    旧版Axios在iOS WKWebView中可能存在请求头处理bug,尝试升级到最新稳定版:

    npm update axios
    

    同时检查iOS端WebView是否开启了跨域限制或内容安全策略(CSP),这类设置可能拦截Token请求头。

  • 统一User-Agent请求头
    部分后端会根据User-Agent做权限校验,iOS与Android的默认User-Agent差异可能导致校验失败。手动设置统一的User-Agent:

    axios.get('/target-api', {
      headers: {
        'Authorization': `Bearer ${yourToken}`,
        'User-Agent': 'YourApp/1.0.0 (Mobile Client)'
      }
    });
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 12:04:57