前端配置跨越请求 搜索新建vue.config.js
LocalStorage
1. token存储
const { token } = res.data;
localStorage.setItem("eleToken", token);
2. 使用-验证
if (localStorage.eleToken){
config.headers.Authorization = localStorage.eleToken}
//如果存在token添加到请求头
const { status } = error.response
if (status == 401) {
Message.error('token值无效,请重新登录')
// 清除token
localStorage.removeItem('eleToken')
}
3. 解析token存储到vuex
npm install jwt-decode
const decode = jwt_decode(token);//解析token(创建时间、有效时间)
axios
1.axios基本请求
axios.get('/foo', params{ 'bar': 123 });
const qs = require('qs'); //npm install qs
axios.post('/foo', qs.stringify({ 'bar': 123 }));
2. 封装加载/状态码
import axios from 'axios'
import { Message, Loading } from 'element-ui';
import router from './router'
let loading //定义loading变量
function startLoading() { //使用Element loading-start 方法
loading = Loading.service({
lock: true,
text: '加载中...',
background: 'rgba(0, 0, 0, 0.7)'
})
}
function endLoading() { //使用Element loading-close 方法
loading.close()
}
// 请求拦截 设置统一header
axios.interceptors.request.use(config => {
// 加载
startLoading()
if (localStorage.eleToken)
config.headers.Authorization = localStorage.eleToken
return config
}, error => {
return Promise.reject(error)
})
// 响应拦截 401 token过期处理
axios.interceptors.response.use(response => {
endLoading()
return response
}, error => {
// 错误提醒
endLoading()
Message.error(error.response.data)
const { status } = error.response
if (status == 401) {
Message.error('token值无效,请重新登录')
// 清除token
localStorage.removeItem('eleToken')
// 页面跳转
router.push('/login')
}
return Promise.reject(error)
})
export default axios