request.ts 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import axios from 'axios'
  2. const instance = axios.create({
  3. baseURL: '/api',
  4. timeout: 100000,
  5. })
  6. instance.interceptors.request.use(
  7. (config) => {
  8. const token = localStorage.getItem('token')
  9. const url = config.url || ''
  10. if (!token) {
  11. if (!url.includes('login')) {
  12. localStorage.removeItem('token')
  13. localStorage.removeItem('username')
  14. localStorage.removeItem('userInfo')
  15. window.location.href = '/#/'
  16. return config
  17. }
  18. } else {
  19. config.headers['token'] = `${token}`
  20. }
  21. return config
  22. },
  23. (error) => {
  24. return Promise.reject(error)
  25. }
  26. )
  27. instance.interceptors.response.use(
  28. (response) => {
  29. let data = response.data || {}
  30. if(data.message == "无效token"){
  31. localStorage.removeItem('token')
  32. localStorage.removeItem('username')
  33. localStorage.removeItem('userInfo')
  34. window.location.href = '/#/'
  35. return null
  36. }else{
  37. return data
  38. }
  39. },
  40. (error) => {
  41. if (error.response) {
  42. const status = error.response.status
  43. if (status === 401 || status === 403) {
  44. localStorage.removeItem('token')
  45. localStorage.removeItem('username')
  46. localStorage.removeItem('userInfo')
  47. window.location.href = '/#/'
  48. }
  49. }
  50. return Promise.reject(error)
  51. }
  52. )
  53. export default instance