| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- import axios from 'axios'
- import store from '@/store'
- import Vue from 'vue'
- import router from '@/router'
- import { getAccessToken, getBrowserFingerprint, removeAll } from '@/utils/auth'
- const instance = axios.create({
- // 域名
- baseURL: process.env.VUE_APP_SERVER_URL,
- headers: {
- 'Content-Type': 'application/json; charset=UTF-8'
- },
- // 5 分钟超时
- timeout: 300000,
- // 允许携带 cookie
- withCredentials: true
- })
- // 并发请求
- Vue.prototype.$http = axios
- // 在全局请求和响应拦截器中添加请求状态
- const loading = null
- // 请求拦截器
- instance.interceptors.request.use(config => {
- // const token = store.getters.token
- const token = getAccessToken()
- if (token) {
- // 在请求的 Authorization 首部添加 token
- config.headers.Authorization = 'Bearer ' + token
- }
- if (Vue.$cookies.get('fp') === null) {
- getBrowserFingerprint()
- }
- return config
- }, error => {
- return Promise.reject(error)
- })
- // 响应拦截器
- instance.interceptors.response.use(
- response => {
- if (loading) {
- loading.close()
- }
- const code = response.status
- if ((code >= 200 && code < 300) || code === 304) {
- return Promise.resolve(response.data)
- } else {
- return Promise.reject(response)
- }
- },
- error => {
- if (loading) {
- loading.close()
- }
- if (error.response) {
- switch (error.response.status) {
- case 401:
- // 返回 401 清除token信息并跳转到登陆页面
- console.log('401 错误')
- Vue.$cookies.remove('token')
- store.commit('USER_LOGOUT')
- store.commit('delToken')
- removeAll()
- router.replace({
- path: '/login',
- query: {
- redirect: router.currentRoute.fullPath
- }
- })
- break
- case 404:
- console.log('404 错误')
- break
- default:
- console.log(error.message)
- }
- } else {
- // 请求超时或者网络有问题
- if (error.message.includes('timeout')) {
- console.log(error.message)
- } else {
- console.log(error.message)
- }
- }
- return Promise.reject(error)
- }
- )
- // HTTP 请求
- export function post(url, data) {
- return instance({
- method: 'post',
- url,
- data: JSON.stringify(data)
- })
- }
- export function postForm(url, formData) {
- return instance({
- method: 'post',
- url,
- data: formData
- })
- }
- export function put(url, data) {
- return instance({
- method: 'put',
- url,
- data: JSON.stringify(data)
- })
- }
- export function delete0(url, data) {
- return instance({
- method: 'delete',
- url,
- data: JSON.stringify(data)
- })
- }
- export function get(url, params) {
- return instance({
- method: 'get',
- url,
- params
- })
- }
|