沐鳴平台首頁_axios前端加密通訊的處理

我們再回過頭看看InterceptorManager還合適么?,先談談項目前景,因為安全的要求,所以我們要把前端所有的請求都得加密與服務端應用進行通訊,當然服務端的響應也是加密的,前端也需要對應得解密。,今天談一談前段時間,項目中遇見的前端axios加解密的處理。,axios.interceptors.request.use(req => { // todo 加密 }) axios.interceptors.response.use(rsp => { // todo 解密 }),export function fetch(…args){ if(isSecurity){ return securityAxios(…args); } return defaultAxios(…args); },可以實現,但是還是略為複雜。,
,import Axios from ‘axios/lib/core/Axios’ import axiosBind from ‘axios/lib/helpers/bind’ import axiosUtils from ‘axios/lib/utils’ // todo 導入 加密的securityAxios, 正常的defaultAxios。 // todo 導入 全局變量isSecurity控制是否需要加密 async function requestProxy(…args) { if(isSecurity){ return await securityAxios.request(…args) } return await defaultAxios.request(…args) } function createInstance(defaultConfig) { const context = new Axios(defaultConfig); Object.defineProperty(context, ‘defaults’, { get() { return isSecurity ? securityAxios.defaults : defaultAxios.defaults; }, }) context.request = requestProxy; var instance = axiosBind(requestProxy, context); axiosUtils.extend(instance, Axios.prototype, context); axiosUtils.extend(instance, context); return instance; } const axiosInstance = createInstance(); axiosInstance.axios = axiosInstance; export default axiosInstance;,
,遇見這個需求,或許從axios文檔中,我們第一時間想到的就是InterceptorManager。,但是現在需求升級了,我們要求前端根據服務端的響應狀態碼自動切換加密或者明文通迅。,我們再回過頭看看InterceptorManager還合適么?