axios-nuxt.js 1.5 KB

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