| 123456789101112131415161718192021222324252627282930 |
- 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)
- },
- )
|