axios.js 1.3 KB

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