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

如何在Nuxt.js中设置axios为全局默认原型并给请求头添加token

Nuxt.js实现全局axios挂载与token自动注入方案

你要的效果无法完全仅靠nuxt.config.js实现:localStorage是浏览器端独有的API,nuxt.config.js会在服务端/构建阶段运行,直接读取localStorage会抛出未定义错误,需要搭配客户端插件完成,具体步骤如下:

  • 第一步:安装官方axios模块
    先安装Nuxt官方维护的axios模块,它会自动完成全局挂载,不需要手动给Vue原型添加属性:
    安装命令:npm install @nuxtjs/axios

  • 第二步:配置nuxt.config.js
    在配置文件中注册axios模块、做基础配置,如果需要把全局挂载名改成你原Vue项目里的$http,可以添加alias配置:

export default {
  // 注册axios模块
  modules: [
    '@nuxtjs/axios',
  ],
  // axios基础配置项
  axios: {
    baseURL: '你的接口基础地址', // 按实际业务替换
    alias: '$http', // 配置后全局挂载名为$http,和原Vue项目用法保持一致
  },
  // 注册客户端侧的axios插件
  plugins: [
    { src: '~/plugins/axios.js', mode: 'client' }
  ]
}
  • 第三步:编写客户端axios插件
    在项目根目录的plugins文件夹下新建axios.js文件,实现localStorage读取和token注入逻辑,推荐搭配请求拦截器使用,保证每次请求都携带最新的token:
export default function ({ $http }) {
  // 初始化时读取localStorage中的token
  const token = window.localStorage.getItem('token')
  if (token) {
    $http.defaults.headers.common['Authorization'] = token
  }
  
  // 可选:添加请求拦截器,适配登录后token刷新的场景
  $http.onRequest(config => {
    const latestToken = window.localStorage.getItem('token')
    if (latestToken) {
      config.headers.common['Authorization'] = latestToken
    }
    return config
  })
}

配置完成后,你可以在组件、Vuex、asyncData等所有上下文里直接用this.$http(未配置alias则用this.$axios)调用axios,所有客户端发起的请求都会自动带上localStorage中存储的token。


内容的提问来源于stack exchange,提问作者P R 3 A C H 3 R

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 14:42:01