小編給大家分享一下vue攔截器如何實現(xiàn)統(tǒng)一token并兼容IE9驗證功能,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
創(chuàng)新互聯(lián)網(wǎng)絡(luò)公司擁有10年的成都網(wǎng)站開發(fā)建設(shè)經(jīng)驗,上千余家客戶的共同信賴。提供網(wǎng)站設(shè)計、成都網(wǎng)站制作、網(wǎng)站開發(fā)、網(wǎng)站定制、賣友情鏈接、建網(wǎng)站、網(wǎng)站搭建、成都響應(yīng)式網(wǎng)站建設(shè)公司、網(wǎng)頁設(shè)計師打造企業(yè)風(fēng)格,提供周到的售前咨詢和貼心的售后服務(wù)項目中使用vue搭建前端頁面,并通過axios請求后臺api接口,完成數(shù)據(jù)交互。如果驗證口令token寫在在每次的接口中,也是個不小的體力活,而且也不靈活。這里分享使用vue自帶攔截器,給每次請求的頭部添加token,而且兼容了IE9。
import axios from 'axios'; // 這里的config包含每次請求的內(nèi)容,在這里把token放到請求頭 axios.interceptors.request.use(function (config) { let token = window.localStorage.getItem("tokenid"); //從緩存中取token if (token) { config.headers.Authorization = token; //將token放到請求頭發(fā)送給服務(wù)器 //這里主要是為了兼容IE9 var browser = navigator.appName; var b_version = navigator.appVersion; if (browser == 'Netscape' && b_version.indexOf(';') < 0) { //火狐 } else { if (b_version.indexOf(';') < 0) { return config; } var version = b_version.split(";"); var trim_Version = version[1].replace(/[ ]/g, ""); if (browser == "Microsoft Internet Explorer" && trim_Version == "MSIE9.0") { //IE9 if (config.url.indexOf('?') > 0) { config.url = config.url + "&token=" + JSON.parse(token).value; } else { config.url = config.url + "?token=" + JSON.parse(token).value; } } } } else { localStorage.clear(); //清空緩存 if (router.currentRoute.name && router.currentRoute.name.toLowerCase() == "login") { //這里需要排除登陸(或者說是第一次請求獲取token)的時候的請求驗證,我這里沒做處理 //我的后臺api接口,并沒有對login接口做token驗證,所以這里不做處理 } else { //除登陸接口外,其他需要token驗證的方法,會走這里且返回null return null; } } return config; }, function (err) { // return Promise.reject(err); }); // http response 攔截器 axios.interceptors.response.use( response => { return response; //請求成功的時候返回的data }, error => { try { if (error.response) { switch (error.response.status) { case 401://token過期,清除token并跳轉(zhuǎn)到登錄頁面 localStorage.clear(); var baurl = window.location.href; router.replace({ path: 'login', query: { backUrl: baurl } }); return; } } return Promise.reject(error.response.data) } catch (e) { } });
寫在后面。因為我的token放在了緩存中,所以在每次請求前,我會先在前端取出token,并驗證其時效性,如果過期或不存在會先跳轉(zhuǎn)到登陸頁,而不會走攔截器去請求請求。具體也參考mounted()方法。
以上是“vue攔截器如何實現(xiàn)統(tǒng)一token并兼容IE9驗證功能”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計公司行業(yè)資訊頻道!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。