12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- import axios from "axios";
- import store from '@/store'
- import router from '@/router'
- 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();
- let obj = {
- method: type,
- baseURL: "",
- url: 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 = localStorage.getItem("token")
- }
- return config;
- },
- error => {
- Toast.clear();
- // 错误抛到业务代码
- return Promise.reject(new Error("服务器异常,请联系管理员!"));
- }
- );
- // 添加响应拦截器
- axios.interceptors.response.use(
- response => {
- if (response.data.status == 404 || response.data.status == 405 || response.data.status == 10011) {
- store.dispatch('user/logout')
- router.push(`/login`)
- }
- return response;
- },
- error => {
- return Promise.reject(error.response.data)
- }
- )
- return new Promise((resolve, reject) => {
- axios(obj)
- .then(response => {
- if (response && response.status === 200) {
- let res = response.data
- resolve(res);
- } else {
- reject(response);
- }
- })
- .catch(res => {
- reject(res);
- });
- });
- };
|