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

如何在React项目中使用axios将token正确设置到请求头中

你调用auth/register注册接口时,token是服务端注册成功后才返回的,调用接口前token变量尚未赋值,自然会出现undefined的情况,注册类的公开接口本身不需要携带token,仅后续需要鉴权的接口需要配置token。


方案1:使用axios拦截器全局统一配置(推荐)

这种方式不需要每次请求手动传递token,所有请求会自动携带,适配大部分业务场景。

第一步:创建自定义axios实例

新建src/utils/request.js文件,代码如下:

import axios from 'axios'

// 创建专属axios实例,避免污染全局axios配置
const service = axios.create({
  baseURL: '/api', // 统一请求前缀,后续请求无需重复拼接/api
  timeout: 10000 // 请求超时时间可按需调整
})

// 请求拦截器:发送请求前自动注入token到请求头
service.interceptors.request.use(
  config => {
    // 从本地存储读取已保存的token
    const token = localStorage.getItem('accessToken')
    if (token) {
      // 注意:常规JWT鉴权格式为`Bearer ${token}`,无需冒号,若后端要求带冒号可保留原写法
      config.headers.Authorization = `Bearer ${token}`
    }
    return config
  },
  error => {
    return Promise.reject(error)
  }
)

export default service

第二步:注册成功后存储token

调用注册接口拿到返回值后,将token存入本地存储:

// 注册接口无需鉴权,直接发起请求即可
const res = await service.post('auth/register', data)
if (res.data.success) {
  // 存储token到本地
  localStorage.setItem('accessToken', res.data.accessToken)
  // 后续所有需要鉴权的接口直接用service实例发起,会自动携带token
  // 示例:获取用户信息
  // const userInfo = await service.get('/user/profile')
}

方案2:改造现有postDataApi辅助函数

如果你不想改动现有调用逻辑,可以直接改造原辅助函数,自动读取本地token:

// 改造后的辅助函数,无需每次手动传token
export const postDataApi = async (url, post) => {
  const token = localStorage.getItem('accessToken')
  const res = await axios.post(`/api/${url}`, post, {
    headers: token ? { Authorization: `Bearer ${token}` } : {}
  })
  return res
}

调用时只需传url和请求参数即可:

// 注册接口
const res = await postDataApi("auth/register", data);
if (res.data.success) {
  localStorage.setItem('accessToken', res.data.accessToken)
}
// 后续鉴权接口直接调用即可
// const res2 = await postDataApi("auth/getInfo", params);

注意事项

如果你的后端鉴权要求Authorization头的格式为Bearer: ${token}(带冒号),可以把上面代码里的Bearer ${token}改成Bearer: ${token}即可。

内容的提问来源于stack exchange,提问作者Cihan Özcan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 23:27:03