Vue使用Axios添加自定義請求頭的多種方式
更新時間:2025年05月16日 17:20:53 作者:大巨頭
Axios 是一個基于 promise 的 HTTP 庫,可以用在瀏覽器和 node.js 中,這篇文章給大家介紹了Vue使用Axios添加自定義請求頭的多種方式,并通過代碼講解的非常詳細,需要的朋友可以參考下
在 Vue 中使用 Axios 添加自定義請求頭有多種方式,以下是詳細實現(xiàn)方案:
1. 全局設(shè)置(適用于所有請求)
// main.js 或 axios 配置文件中 import axios from 'axios'; axios.defaults.headers.common['X-Custom-Header'] = 'default-value'; axios.defaults.headers.post['Content-Type'] = 'application/json'; // 設(shè)置POST默認頭
2. 實例配置(推薦方式)
// 創(chuàng)建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. 請求攔截器設(shè)置(動態(tài)頭)
http.interceptors.request.use(config => {
// 動態(tài)設(shè)置認證頭
const token = localStorage.getItem('token');
if (token) {
config.headers.Authorization = `Bearer ${token}`;
}
// 固定業(yè)務(wù)頭
config.headers['X-Client-Version'] = '1.0.0';
config.headers['X-Platform'] = 'Web';
return config;
}, error => {
return Promise.reject(error);
});
4. 單個請求設(shè)置
// 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 預(yù)檢請求
// 確保服務(wù)器允許自定義頭 // 示例:Nginx配置 add_header 'Access-Control-Allow-Headers' 'X-Custom-Header, Authorization';
問題2:頭信息被覆蓋
// 在攔截器中合并頭信息
config.headers = {
...config.headers,
'X-New-Header': 'value',
'Content-Type': 'application/json' // 明確設(shè)置內(nèi)容類型
};
問題3:開發(fā)環(huán)境代理配置
// 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)建議只在攔截器中設(shè)置
- 業(yè)務(wù)相關(guān)頭(如X-User-Type)建議在實例級別設(shè)置
- 臨時特殊頭(如X-Debug-Mode)在單個請求設(shè)置
- 所有自定義頭應(yīng)以
X-前綴開頭(傳統(tǒng)約定) - 生產(chǎn)環(huán)境應(yīng)移除不必要的頭信息
通過以上方法,你可以靈活地在Vue項目中管理各種自定義請求頭,同時保持良好的代碼組織和可維護性。
以上就是Vue使用Axios添加自定義請求頭的多種方式的詳細內(nèi)容,更多關(guān)于Vue Axios添加自定義請求頭的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
解決Vue3.0刷新頁面警告[Vue Router warn]:No match 
這篇文章主要介紹了解決Vue3.0刷新頁面警告[Vue Router warn]:No match found for location with path /xxx問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-03-03
Nuxt.js實現(xiàn)一個SSR的前端博客的示例代碼
這篇文章主要介紹了Nuxt.js實現(xiàn)一個SSR的前端博客的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
vue2如何使用simple-keyboard軟鍵盤有中文(拼音)
這篇文章主要介紹了vue2如何使用simple-keyboard軟鍵盤有中文(拼音),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-04-04

