axios.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import axios from 'axios'
  2. export default ({store}, inject) => {
  3. const service = axios.create({
  4. withCredentials: true,
  5. baseURL: '/'
  6. })
  7. service.interceptors.request.use(config => {
  8. if (typeof window === 'undefined') {
  9. config.url = process.env.baseUrl + config.url
  10. config.headers.cookie = store.state.option.cookies + '; ' + store.state.option.sessionId
  11. config.headers['User-Agent'] = store.state.option.userAgent
  12. }
  13. return config
  14. }, error => {
  15. return Promise.reject(error)
  16. })
  17. service.interceptors.response.use(response => {
  18. const cookies = response.headers['set-cookie']
  19. if (cookies && cookies.length) {
  20. for (let i = 0; i < cookies.length; i++) {
  21. if (cookies[i].indexOf('JSESSIONID') > -1) {
  22. const sessionId = cookies[i]
  23. const first = sessionId.indexOf(';')
  24. const second = sessionId.lastIndexOf(';')
  25. const newSessionId = sessionId.replace(sessionId.substring(first, second), '')
  26. store.commit('option/SET_SESSION_ID', newSessionId)
  27. break
  28. }
  29. }
  30. }
  31. return response
  32. }, error => {
  33. return Promise.reject(error)
  34. })
  35. inject('axios', service)
  36. }