axios-nuxt.js 1.7 KB

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