axios-nuxt.js 1.4 KB

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