import axios from "axios"; const http = axios.create({ baseURL: "", timeout: 15000 }); http.interceptors.request.use((config) => { const token = localStorage.getItem("accessToken"); if (token) { config.headers = config.headers || {}; config.headers.Authorization = `Bearer ${token}`; } return config; }); http.interceptors.response.use( (resp) => { const body = resp.data; if (body && body.code !== "0") { const err = new Error(body.msg || "请求失败"); (err as any).code = body.code; (err as any).msg = body.msg; return Promise.reject(err); } return resp; }, (error) => { if (error.response && (error.response.status === 401 || error.response.status === 403)) { // Clear session/local storage localStorage.removeItem("accessToken"); localStorage.removeItem("refreshToken"); sessionStorage.removeItem("userProfile"); // Force redirect to login with timeout flag window.location.href = "/login?timeout=1"; } // Process backend error message if available in response body even for non-200 status const body = error.response?.data; if (body && body.msg) { const err = new Error(body.msg); (err as any).code = body.code; (err as any).msg = body.msg; return Promise.reject(err); } return Promise.reject(error); } ); export default http;