request.js 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. import Vue from 'vue'
  2. import axios from 'axios'
  3. import router from '@/router/index'
  4. import { MessageBox, Message } from 'element-ui'
  5. // import store from '@/store'
  6. // import { getToken } from '@/utils/auth'
  7. //自动打包、让内外网都能登陆的设置,但是npm run dev 后只能选localhost展示了
  8. //后端框架才需要这段——本地手动打包时可注释
  9. const DoMainString = document.querySelector("html").getAttribute("domain");
  10. axios.defaults.baseURL = process.env.VUE_APP_BASE_API
  11. if (DoMainString) {
  12. axios.defaults.baseURL = DoMainString
  13. }
  14. var reg = /(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)/;
  15. var browserUrl = window.location.hostname
  16. if (reg.test(browserUrl)){
  17. axios.defaults.baseURL = window.location.protocol +"//"+ browserUrl + ":8087/"
  18. }
  19. //后端框架才需要这段——本地手动打包时可注释
  20. //正常本地打包地址
  21. // axios.defaults.baseURL = process.env.VUE_APP_BASE_API
  22. // create an axios instance
  23. const service = axios.create({
  24. //baseURL: process.env.VUE_APP_BASE_API, // 根目录路径
  25. // baseURL: 'http://192.168.1.77:8092',
  26. // baseURL: 'http://192.168.1.70:8087',
  27. //baseURL: 'http://192.168.1.96.8090',
  28. withCredentials: true, // send cookies when cross-domain requests
  29. timeout: 60000 // request timeout
  30. })
  31. // request interceptor
  32. service.interceptors.request.use(
  33. config => {
  34. // do something before request is sent
  35. // config.headers['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8' //此处是增加的代码,设置请求头的类型
  36. // if (process.env.VUE_APP_BASE_API !== '/dev-api') {
  37. // config.headers['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8'
  38. // config.withCredentials = false
  39. // }
  40. // if (store.getters.token) {
  41. // if (process.env.VUE_APP_BASE_API === '/dev-api') {
  42. // config.headers['X-Token'] = getToken()
  43. // } else {
  44. // config.headers['token'] = getToken()
  45. // }
  46. // }
  47. // console.log(sessionStorage.getItem("g_token"))
  48. config.headers['Authorization'] = 'Bearer '+ window.sessionStorage.getItem("g_token")
  49. return config
  50. },
  51. error => {
  52. // do something with request error
  53. console.log(error) // for debug
  54. return Promise.reject(error)
  55. }
  56. )
  57. // response interceptor
  58. service.interceptors.response.use(
  59. /**
  60. * If you want to get http information such as headers or status
  61. * Please return response => response
  62. */
  63. /**
  64. * Determine the request status by custom code
  65. * Here is just an example
  66. * You can also judge the status by HTTP Status Code
  67. */
  68. response => {
  69. // console.log("response-------------",response)
  70. const res = response.data
  71. //console.log(res)
  72. // if the custom code is not 20000, it is judged as an error.
  73. if (res.code !== 200) {
  74. Message({
  75. // message: res.msg + res.code,
  76. message: '请求超时'+ res.msg,
  77. type: 'error',
  78. duration: 5 * 1000
  79. })
  80. // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
  81. // if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
  82. // // to re-login
  83. // MessageBox.confirm('你已经注销登陆,你可以取消或重新登陆', '确认注销', {
  84. // confirmButtonText: '重新登陆',
  85. // cancelButtonText: '取消',
  86. // type: 'warning'
  87. // }).then(() => {
  88. // // store.dispatch('user/resetToken').then(() => {
  89. // // location.reload()
  90. // // })
  91. // })
  92. // }
  93. // if (res.code === 20002) {
  94. // // store.dispatch('user/resetToken').then(() => {
  95. // // location.reload()
  96. // // })
  97. // }
  98. if (res.code === undefined) {
  99. return res
  100. } else {
  101. return Promise.reject(new Error(res.message || 'Error'))
  102. }
  103. } else {
  104. return res
  105. }
  106. },
  107. error => {
  108. console.log('error' + error) // for debug
  109. if (error.response.data.code === 10000) {
  110. MessageBox.confirm('你已经注销登陆,你可以取消或重新登陆', '确认注销', {
  111. confirmButtonText: '重新登陆',
  112. cancelButtonText: '取消',
  113. type: 'warning'
  114. }).then(() => {
  115. //清空token
  116. window.sessionStorage.clear()
  117. //跳转登录页
  118. router.push('/login')
  119. location.reload()
  120. })
  121. }
  122. let config = error.config
  123. if (!config) {
  124. Message({ message: error.msg, type: 'error', duration: 5 * 1000 })
  125. return Promise.reject(error)
  126. }
  127. Message({
  128. message: "操作错误!"+error.response.data.errors[0],
  129. type: 'error',
  130. duration: 5 * 1000
  131. })
  132. return Promise.reject(error)
  133. }
  134. )
  135. export default service