Vue使用Axios添加自定义请求头的多种方式

 更新时间:2025年05月16日 17:20:53   作者:大巨头  
Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中,这篇文章给大家介绍了Vue使用Axios添加自定义请求头的多种方式,并通过代码讲解的非常详细,需要的朋友可以参考下

在 Vue 中使用 Axios 添加自定义请求头有多种方式,以下是详细实现方案:

1. 全局设置(适用于所有请求)

// main.js 或 axios 配置文件中
import axios from 'axios';

axios.defaults.headers.common['X-Custom-Header'] = 'default-value';
axios.defaults.headers.post['Content-Type'] = 'application/json'; // 设置POST默认头

2. 实例配置(推荐方式)

// 创建axios实例(api.js)
const http = axios.create({
  baseURL: process.env.VUE_APP_API_BASE_URL,
  headers: {
    'X-Requested-With': 'XMLHttpRequest',
    'X-Custom-Header': 'instance-value'
  }
});

3. 请求拦截器设置(动态头)

http.interceptors.request.use(config => {
  // 动态设置认证头
  const token = localStorage.getItem('token');
  if (token) {
    config.headers.Authorization = `Bearer ${token}`;
  }
  
  // 固定业务头
  config.headers['X-Client-Version'] = '1.0.0';
  config.headers['X-Platform'] = 'Web';
  
  return config;
}, error => {
  return Promise.reject(error);
});

4. 单个请求设置

// GET请求
this.$http.get('/api/data', {
  headers: {
    'X-Special-Header': 'for-this-request-only'
  }
});

// POST请求
this.$http.post('/api/save', data, {
  headers: {
    'X-Data-Type': 'json',
    'X-Request-ID': uuidv4() // 生成唯一ID
  }
});

5. 处理常见问题

问题1:CORS 预检请求

// 确保服务器允许自定义头
// 示例:Nginx配置
add_header 'Access-Control-Allow-Headers' 'X-Custom-Header, Authorization';

问题2:头信息被覆盖

// 在拦截器中合并头信息
config.headers = {
  ...config.headers,
  'X-New-Header': 'value',
  'Content-Type': 'application/json' // 明确设置内容类型
};

问题3:开发环境代理配置

// vue.config.js
devServer: {
  proxy: {
    '/api': {
      target: 'http://backend:8080',
      headers: {
        'X-Proxy-Header': 'vue-dev-server'
      }
    }
  }
}

6. TypeScript 类型支持(如使用TS)

declare module 'axios' {
  interface AxiosRequestConfig {
    customMetadata?: {
      startTime?: number;
      retryCount?: number;
    };
  }
}

// 使用扩展配置
http.get('/api', {
  customMetadata: {
    startTime: Date.now()
  },
  headers: {
    'X-Performance-Marker': 'start'
  }
});

最佳实践建议:

  • 敏感头(如Authorization)建议只在拦截器中设置
  • 业务相关头(如X-User-Type)建议在实例级别设置
  • 临时特殊头(如X-Debug-Mode)在单个请求设置
  • 所有自定义头应以X-前缀开头(传统约定)
  • 生产环境应移除不必要的头信息

通过以上方法,你可以灵活地在Vue项目中管理各种自定义请求头,同时保持良好的代码组织和可维护性。

以上就是Vue使用Axios添加自定义请求头的多种方式的详细内容,更多关于Vue Axios添加自定义请求头的资料请关注脚本之家其它相关文章!

相关文章

  • 使用provide/inject实现跨组件通信的方法

    使用provide/inject实现跨组件通信的方法

    在 Vue 应用中,组件间通信是构建复杂应用时的一个常见需求,Vue3.x 提供了provide和inject API,让跨组件通信变得更加简洁和高效,本文将深入探讨如何使用provide和inject在Vue3.x中实现跨组件通信,并通过示例代码一步步进行说明,需要的朋友可以参考下
    2024-03-03
  • Vue3.x源码调试的实现方法

    Vue3.x源码调试的实现方法

    这篇文章主要介绍了Vue3.x源码调试的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • Vue路由跳转传参后无法清空地址栏参数问题解决方案

    Vue路由跳转传参后无法清空地址栏参数问题解决方案

    这篇文章主要介绍了Vue路由跳转传参后无法清空地址栏参数问题解决方案,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2025-05-05
  • Vue常用API、高级API的相关总结

    Vue常用API、高级API的相关总结

    这篇文章主要介绍了Vue常用API、高级API的相关总结,帮助大家更好的理解和学习使用vue框架,感兴趣的朋友可以了解下
    2021-02-02
  • Vue3 + MybatisPlus实现批量删除功能(详细代码)

    Vue3 + MybatisPlus实现批量删除功能(详细代码)

    这篇文章主要介绍了Vue3 + MybatisPlus实现批量删除功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-03-03
  • vue如何通过某个字段获取详细信息

    vue如何通过某个字段获取详细信息

    这篇文章主要介绍了vue如何通过某个字段获取详细信息,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • Vue3路由useRoute/useRouter传参、跳转、避坑最全实战指南(别再乱用了!)

    Vue3路由useRoute/useRouter传参、跳转、避坑最全实战指南(别再乱用了!)

    这篇文章主要介绍了Vue3路由useRoute/useRouter传参、跳转、避坑最全实战指南的相关资料,文中通过代码详细区分了二者的核心区别和适用场景,配置了完整的传参规则和解决方案,帮助开发者正确使用组合式路由API,避免常见的BUG和异常,需要的朋友可以参考下
    2026-05-05
  • 利用vue+elementUI实现部分引入组件的方法详解

    利用vue+elementUI实现部分引入组件的方法详解

    这篇文章主要给大家介绍了关于利用vue+elementUI实现部分引入组件的相关资料,以及介绍了vue引入elementUI报错的解决方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
    2017-11-11
  • Vue.js递归组件实现组织架构树和选人功能

    Vue.js递归组件实现组织架构树和选人功能

    这篇文章主要介绍了Vue.js递归组件实现组织架构树和选人功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • vue中如何使用xlsx读取excel文件实例代码

    vue中如何使用xlsx读取excel文件实例代码

    在Vue中使用xlsx库可以帮助我们读取和写入Excel文件,下面这篇文章主要给大家介绍了关于vue中如何使用xlsx读取excel文件的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-12-12

最新评论