import axios from 'axios' import { getToken, setToken } from './token' /** 开发由 Vite 代理,生产由 Nginx 在 /viewer 下转发。 */ export const http = axios.create({ baseURL: import.meta.env.VITE_API_BASE ?? (import.meta.env.DEV ? '' : '/viewer'), timeout: 60000, }) http.interceptors.request.use((config) => { const token = getToken() if (token) { config.headers = config.headers ?? {} config.headers.Authorization = `Bearer ${token}` } return config }) http.interceptors.response.use( (response) => response, (error) => { const url = String(error?.config?.url ?? '') if (error?.response?.status === 401 && !url.includes('/api/login')) { setToken(null) window.dispatchEvent(new CustomEvent('auth-expired')) } return Promise.reject(error) }, )