Atlassian應對CVE-2022-22963,CVE-2022-22965的常見問題
阿新 • • 發佈:2022-04-14
檢視程式碼
import axiox from 'axios' import store from "@/store"; import utils from "@/utils"; import Qs from 'qs' import { Message } from "element-ui"; const axiosConfig = { headers: { 'Content-Type': 'application/json;charset=UTF-8', }, timeout: 10000, // responseType: 'json', maxContentLength: 2000, } const request = axiox.create(axiosConfig) let isRefreshing = false let queue = [] let runQueue = () => { isRefreshing = true let first = queue.shift() first.request() } request.interceptors.request.use((config) => { const token = utils.storage.get("token"); if (config.headerType) { config.headers['Content-Type'] = config.headerType } if (config.url.indexOf("api/scrm-system/v1/auth/one_click_login")>-1) { //一鍵登入 utils.cookie.setCookie("zh-auth", JSON.parse(localStorage.getItem("onelogin"))); config.headers["zh-auth"] = `${localStorage.getItem("onelogin")}`; } else { if (token && !config.clearToken) { config.headers["zh-auth"] = `${token}`; config.headers["trace-id"] = utils.storage.get("traceId"); } } //自定義表頭 if (config.customHeader) { config.headers = { ...config.headers, ...config.headerObj } } return config; }, function (error) { return Promise.reject(error); }); request.interceptors.response.use(function (response) { if ((response.config ?.url || "").indexOf("api/scrm-system/v1/auth/create_status") > -1||(response.config ?.url || "").indexOf("api/scrm-system/v1/auth/wx_scancode_Login") > -1||(response.config ?.url || "").indexOf("api/scrm-system/v1/auth/one_click_login") > -1) { utils.storage.set("token", response.headers["zh-auth"]); utils.storage.set("traceId", response.headers["trace-id"]); utils.cookie.setCookie("zh-auth", response.headers["zh-auth"]); } store.dispatch("SetLoding", false); isRefreshing = false if (!(queue.length === 0)) runQueue() if (response.status == 200 && (response.config ?.url || "").indexOf("api/scrm-system/v1/auth/delete_status") > -1 || response.status == "200" && (response.config ?.url || "").indexOf("api/scrm-system/v1/auth/delete_status") > -1||response.status == 401||response.status == "401") { utils.cookie.delCookie("tokzh-authen"); utils.storage.remove("token"); utils.storage.remove("traceId"); utils.storage.remove("userInfo"); Message({ type: "success", message: "已退出登入!", }); window.setTimeout(() => { // 手動更新, 重新整理許可權 location.reload(); }, 1000); } if (response.data) { console.log(response, "response.data"); let result = null; if (response.data.code == 100000 || response.data.code == "100000" || response.data.errno == "0") { result = { ...response.data } } else { Message.error(response.data.msg || response.data.errmsg || "介面報錯"); } return result } }, function (error) { store.dispatch("SetLoding", false); isRefreshing = false if (!(queue.length === 0)) runQueue() return Promise.reject(error); }); const httpPost = async ({ url, method = 'POST', data = {}, params = {}, clearToken = false, customHeader = false, headerObj = {}, onUploadProgress = () => {}, headerType = "", }) => { return new Promise((resolve, reject) => { if (!data.noLoading) store.dispatch("SetLoding", true); console.log(data, "data"); let _fun=null; if (method=="GET"||method=="DELETE") { _fun=(params)=>{ return Qs.stringify(params, { arrayFormat: 'repeat' }) } } queue.push({ request: () => { request({ method, url, data, params, clearToken, customHeader, headerObj, onUploadProgress, headerType, paramsSerializer:_fun }).then(res => { resolve(res) }).catch(e => { reject(e) }) } }) if (!isRefreshing) runQueue() }) } export { httpPost }