httputils.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  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. let resp = res.data
  36. if (resp.result === 'unauthc') {
  37. store.commit('logined', false)
  38. MessageBox.confirm('未登陆或登陆信息已失效, 是否重新登陆?', '提示', {
  39. confirmButtonText: '确定',
  40. cancelButtonText: '取消',
  41. type: 'error'
  42. })
  43. .then(resp => {
  44. window.location.reload()
  45. })
  46. .catch(error => {
  47. console.log('')
  48. })
  49. }
  50. return res
  51. },
  52. function(err) {
  53. console.log('axios interceptors err = ', err)
  54. return Promise.reject(err)
  55. }
  56. )
  57. export default {
  58. //获取cookie
  59. getCookie(name) {
  60. var arr,
  61. reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)')
  62. if ((arr = document.cookie.match(reg))) {
  63. return unescape(arr[2])
  64. } else {
  65. /* 如果没有参数,那么就获取本域下的所有cookie */
  66. return document.cookie
  67. }
  68. },
  69. async getJson(url, params) {
  70. try {
  71. let response = await axiosservice({
  72. url,
  73. params,
  74. method: 'get'
  75. })
  76. return response.data
  77. } catch (err) {
  78. throw err
  79. }
  80. },
  81. async postJson(url, data) {
  82. try {
  83. let response = await axiosservice({
  84. url,
  85. data,
  86. method: 'post'
  87. })
  88. return response.data
  89. } catch (err) {
  90. throw err
  91. }
  92. },
  93. axios: axiosservice
  94. }