123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- // import axios from 'axios'
- import Router from '@/router/index'
- // import store from '@/store'
- import urlConfig from '@/apis/url-config'
- import {
- getToken, removeMenu,
- removeBtn, removeToken
- } from '@/utils/auth'
- const header = {
- // "X-Requested-With": "XMLHttpRequest",
- // "X-Frame-Options": "DENY", // 告诉浏览器不要(DENY)把这个网页放在iFrame内,通常的目的就是要帮助用户对抗点击劫持。
- // "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"
- }
- window.ajaxTimeout = 20000
- export default async (
- url = '',
- data = {},
- type = 'GET',
- params = {},
- headers = header,
- onUploadProgress
- ) => {
- type = type.toLowerCase()
- console.log(headers)
- const obj = {
- method: type,
- baseURL: '',
- url: urlConfig.baseURL + url,
- data,
- params,
- // // `onUploadProgress` 允许为上传处理进度事件
- // onUploadProgress: function(progressEvent) {
- // // 对原生进度事件的处理
- // },
- // // `onDownloadProgress` 允许为下载处理进度事件
- // onDownloadProgress: function(progressEvent) {
- // // 对原生进度事件的处理
- // },
- // `cancelToken` 指定用于取消请求的 cancel token
- // (查看后面的 Cancellation 这节了解更多)
- // cancelToken: new CancelToken(function (cancel) {
- // }),
- processData: true, // 告诉axios不要去处理发送的数据(重要参数)
- timeout: window.ajaxTimeout,
- headers,
- onUploadProgress
- }
- if (onUploadProgress && typeof onUploadProgress === 'function') {
- obj.onUploadProgress = onUploadProgress
- }
- // return await axios(obj)
- // .then(response => {
- // return response;
- // })
- // .catch(res => {
- // return res;
- // });
- // 请求拦截器
- axios.interceptors.request.use(
- config => {
- if (!config.data.token) {
- config.data.token = getToken()
- }
- return config
- },
- error => {
- // 错误抛到业务代码
- return Promise.reject(new Error('服务器异常,请联系管理员!'))
- }
- )
- // 添加响应拦截器
- axios.interceptors.response.use(
- async response => {
- if (response.status === 200) {
- const code = response.data.code
- if (code >= 100 && code <= 104) {
- removeToken()
- removeMenu()
- removeBtn()
- }
- }
- return response
- },
- error => {
- return Promise.reject(error.response.data)
- }
- )
- return new Promise((resolve, reject) => {
- axios(obj)
- .then(response => {
- resolve(response.data)
- })
- .catch(res => {
- if (res.response && res.response.data) {
- reject(res.response.data);
- } else {
- reject(res);
- }
- });
- })
- }
|