import axios from 'axios' let reqCount = 0 // 请求计数器 const isServer = typeof window === 'undefined' export default ({store, app, req}, inject) => { const service = axios.create({ withCredentials: true, // Specify baseURL by where code runs. baseURL: process.server ? process.env.baseUrl : '/', maxRedirects: 0 }) service.interceptors.request.use(config => { reqCount++ if (process.server) { if (req.headers.cookie) { config.headers.cookie = req.headers.cookie } config.headers['User-Agent'] = req.headers['user-agent'] } if (!process.server) { document.getElementById('loading').setAttribute('class', 'loading in') } return config }, error => { return Promise.reject(error) }) service.interceptors.response.use(response => { const cookies = response.headers['set-cookie'] if (cookies && cookies.length) { for (let i = 0; i < cookies.length; i++) { if (cookies[i].indexOf('JSESSIONID') > -1) { const sessionId = cookies[i] const first = sessionId.indexOf(';') const second = sessionId.lastIndexOf(';') const newSessionId = sessionId.replace(sessionId.substring(first, second), '') store.commit('option/SET_SESSION_ID', newSessionId) break } } } if (--reqCount <= 0 && !process.server) { document.getElementById('loading').setAttribute('class', 'loading') } return response }, error => { if (--reqCount <= 0 && !process.server) { document.getElementById('loading').setAttribute('class', 'loading') } return Promise.reject(error) }) inject('axios', service) }