httputils.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. import axios from 'axios'
  2. import store from '@/store'
  3. import { MessageBox } from 'element-ui'
  4. var CancelToken = axios.CancelToken
  5. var cancel
  6. // 创建axios实例
  7. const axiosservice = axios.create({
  8. timeout: 3000000, // 请求超时时间
  9. retry: 4, //重新请求次数
  10. retryDelay: 1000, //重新请求的间隔
  11. credentials: true, // 接口每次请求会跨域携带cookie
  12. cancelToken: new CancelToken(function executor(c) {
  13. // executor 函数接收一个 cancel 函数作为参数
  14. cancel = c
  15. })
  16. })
  17. axiosservice.interceptors.request.use(
  18. config => {
  19. config.withCredentials = true // 允许携带token ,这个是解决跨域产生的相关问题
  20. let token = store.getters['ssoToken']
  21. if (token) {
  22. config.headers = {
  23. 'sso-token': token
  24. }
  25. }
  26. return config
  27. },
  28. error => {
  29. return Promise.reject(error)
  30. }
  31. )
  32. axiosservice.interceptors.response.use(
  33. function(res) {
  34. //在这里对返回的数据进行处理
  35. //console.log('axios interceptors res = ', res.status, res)
  36. let resp = res.data
  37. if (resp.result === 'unauthc') {
  38. store.commit('logined', false)
  39. MessageBox.confirm('未登陆或登陆信息已失效, 是否重新登陆?', '提示', {
  40. confirmButtonText: '确定',
  41. cancelButtonText: '取消',
  42. type: 'error'
  43. })
  44. .then(resp => {
  45. //console.log('--------------------------- confirm', resp)
  46. //router.push('/login')
  47. window.location.reload()
  48. })
  49. .catch(error => {
  50. //console.log('--------------------------- cancel', error)
  51. console.log('')
  52. })
  53. }
  54. //console.log('axios interceptors resp2 = ', resp.success, resp.errorCode, resp.errorMessage, res)
  55. return res
  56. },
  57. function(err) {
  58. //Do something with response error
  59. console.log('axios interceptors err = ', err)
  60. return Promise.reject(err)
  61. }
  62. )
  63. export default {
  64. //获取cookie
  65. getCookie(name) {
  66. var arr,
  67. reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)')
  68. if ((arr = document.cookie.match(reg))) {
  69. return unescape(arr[2])
  70. } else {
  71. /* 如果没有参数,那么就获取本域下的所有cookie */
  72. return document.cookie
  73. }
  74. },
  75. async getJson(url, params) {
  76. try {
  77. let response = await axiosservice({
  78. url,
  79. params,
  80. method: 'get'
  81. })
  82. return response.data
  83. } catch (err) {
  84. throw err
  85. }
  86. },
  87. async postJson(url, data) {
  88. try {
  89. let response = await axiosservice({
  90. url,
  91. data,
  92. method: 'post'
  93. })
  94. return response.data
  95. } catch (err) {
  96. throw err
  97. }
  98. },
  99. axios: axiosservice
  100. }