1. 程式人生 > 程式設計 >vue+axios全域性新增請求頭和引數操作

vue+axios全域性新增請求頭和引數操作

走登入的介面都會返回一個token值,然後存起來方便之後調介面的時候給後臺傳過去,傳給後臺的方式有兩種:(具體使用哪種需要和後臺商量)

1、放在請求頭中

2、放在介面的引數中

1、放在請求頭中

下面程式碼是從本地cookie中拿token

VueCookie:一個用於處理瀏覽器cookies的簡單Vue.js外掛.

// 在封裝axios的檔案中新增攔截器
// 新增請求攔截器,在請求頭中加token
service.interceptors.request.use(
 config => {
 // 判斷本地的cookie中是否有token
 if (VueCookie.isKey('token')) {
 config.headers.Authorization = VueCookie.get('token')
 } else {
 // 跳轉到登入頁面(這裡使用router,是因為路由檔案引入到了此檔案裡)
 router.push('/login')
 }
 return config
 },error => {
 return Promise.reject(error)
 })

這個時候雖然在請求頭中放了token,但是後臺並拿不到token的值,我們需要在建立axios物件的時候允許請求攜帶cokie,也可以加到main.js全局裡面。

// 放在請求檔案中
const service = axios.create({
 baseURL: "http://XXXXXXXXX:XXXX",timeout: 10000,withCredentials: true // 允許攜帶cookie
});
// 放在全域性main.js中
import axios from "axios";
axios.defaults.withCredentials = true; // 允許攜帶cookie

2、放在引數中

以下程式碼是從本地儲存localStorage中拿token

// 新增請求攔截器,在引數中加token
service.interceptors.request.use(
 config => {
 // 將token新增到每一個介面的引數中
 // 判斷請求的型別:如果是post請求就把預設引數拼到data裡面;如果是get請求就拼到params裡面
 const token = localStorage.getItem('ISTOKEN')
 if (localStorage.getItem('ISTOKEN')) {
 // 注意:config.method 的判斷值必須是小寫的post和get
 if (config.method === 'post') {
 config.data = {
  api_token: token,...config.data
 }
 } else if (config.method === 'get') {
 config.params = {
  api_token: token,...config.params
 }
 }
 } else {
 // 跳轉到登入頁面(這裡使用router,是因為路由檔案引入到了此檔案裡)
 router.push('/login')
 }
 return config
 },error => {
 return Promise.reject(error)
 })

補充知識:Vue,POST請求頭'Content-Type':'application/json;',data上傳方法

如下所示:

vue+axios全域性新增請求頭和引數操作

transformRequest 方法說明axios中文文件

以上這篇vue+axios全域性新增請求頭和引數操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。