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

React Native中Axios在iOS端丢失Authorization头的问题求助

iOS端Axios请求丢失Authorization头的修复方案
  • 强制统一请求头大小写
    iOS的NSURLSession可能会自动把请求头字段转成小写,部分后端可能对大小写敏感。试试把Authorization写成全小写的authorization,或者用Axios拦截器同时设置两种大小写的头:
axios.interceptors.request.use(config => {
  config.headers['Authorization'] = `Bearer ${authToken}`;
  config.headers['authorization'] = `Bearer ${authToken}`;
  return config;
});
  • 排查跨域OPTIONS请求问题
    iOS处理跨域时,OPTIONS预请求不会带Authorization头,后端得正确放行这个请求。在FastAPI里配置CORS时明确允许Authorization头:
from fastapi.middleware.cors import CORSMiddleware

app = FastAPI()

app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],  # 换成你实际允许的前端域名
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["Authorization", "*"],
)
  • 用Axios实例统一配置请求头
    别每次请求单独写头,直接创建Axios实例时统一设置,减少出错概率:
const api = axios.create({
  baseURL: API_URL,
  headers: {
    'Authorization': `Bearer ${authToken}`
  }
});

// 之后用这个实例发请求
api.get('/api/profile/')
  .then(response => { /* 处理响应 */ })
  .catch(err => { /* 处理错误 */ });
  • 确认authToken的有效性
    iOS端可能存在token未正确初始化的情况,比如异步获取token的时机不对,发起请求前先检查token是否存在:
if (authToken) {
  let config = {
    headers: {
      'Authorization': `Bearer ${authToken}`,
    },
    method: 'GET',
    url: `${API_URL}/api/profile/`
  };
  axios.request(config).then(...).catch(...);
} else {
  // 先处理token缺失的情况
}
  • 关闭Axios自动转换功能
    有时候Axios的自动数据转换会意外修改请求头,试试关闭这个功能:
let config = {
  headers: {
    'Authorization': `Bearer ${authToken}`,
  },
  method: 'GET',
  url: `${API_URL}/api/profile/`,
  transformRequest: [(data, headers) => {
    return data;
  }]
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 22:33:21