axios.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. /**
  2. *
  3. * http配置
  4. *
  5. */
  6. // 引入axios以及element ui中的loading和message组件
  7. import axios from 'axios'
  8. import router from '../router/router'
  9. import store from '../store'
  10. import {
  11. getToken
  12. } from '@/util/auth'
  13. import NProgress from 'nprogress' // progress bar
  14. import errorCode from '@/const/errorCode'
  15. import {
  16. Message
  17. } from 'element-ui'
  18. import 'nprogress/nprogress.css' // progress bar style
  19. axios.defaults.timeout = 30000;
  20. //返回其他状态吗
  21. // axios.defaults.validateStatus = function(status) {
  22. // return status >= 200 && status < 500; // 默认的
  23. // };
  24. //跨域请求,允许保存cookie
  25. axios.defaults.withCredentials = true;
  26. NProgress.configure({
  27. showSpinner: false
  28. }) // NProgress Configuration
  29. //HTTPrequest拦截
  30. axios.interceptors.request.use(config => {
  31. NProgress.start() // start progress bar
  32. if (store.getters.access_token) {
  33. config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带token--['X-Token']为自定义key 请根据实际情况自行修改
  34. }
  35. if (sessionStorage.getItem('tenantId')) {
  36. config.headers['TENANT_ID'] = sessionStorage.getItem('tenantId') // 租户ID
  37. }
  38. return config
  39. }, error => {
  40. console.log('err' + error) // for debug
  41. return Promise.reject(error)
  42. })
  43. //HTTPresponse拦截
  44. axios.interceptors.response.use(res => {
  45. NProgress.done();
  46. return res
  47. }, error => {
  48. NProgress.done()
  49. let errMsg = error.toString()
  50. let code = errMsg.substr(errMsg.indexOf('code') + 5)
  51. Message({
  52. message: errorCode[code] || errorCode['default'],
  53. type: 'error'
  54. })
  55. if (parseInt(code) === 401 || parseInt(code) === 403) {
  56. store.dispatch('FedLogOut').then(() => {
  57. router.push({
  58. path: '/login'
  59. });
  60. })
  61. }
  62. return Promise.reject(new Error(error))
  63. })
  64. export default axios