常用全局配置
1. 全局配置请求ip及端口号
axios.defaults.baseURL = global.HOST; (默认地址)
2. 配置axios请求头中的content-type为指定类型
axios.defaults.headers.post["Content-Type"] = "application/x-www-form-urlencoded";
或者
{headers:{'Content-Type':'application/x-www-form-urlencoded'}}
3.请求超时时间
axios.defaults.timeout = 10000; // 超时时间
4.interceptor拦截器
也可以叫中间件、钩子函数,会在特定的操作之前或之后触发。
(1)请求拦截器(前置钩子)
在发送请求之前都会首先执行的方法。比如 带上token
axios.interceptors.request.use(
config => {
// 获取 token 值,若不存在,则为空
const token = sessionStorage.getItem('token') || '';
// 将参数由对象转换为formData格式
// config.data = QS.stringify(config.data)
// 给请求头中拼接 token 参数
config.headers = {
...config.headers,
Authorization: token
}
return config;
},
error => {
return Promise.reject(err);
}
);
(2)响应拦截器
在返回数据之后都会首先执行的方法。比如判断 token是否过期,过期了怎么处理
axios.interceptors.response.use(function (response){
if(response.data.code == 494){
sessionStorage.removeItem("token")
router.replace({
path: '/login' // 到登录页重新获取token
})
}else if(response.data.token){
sessionStorage.setItem("token",response.data.token)
}
return response
},function(error){
return Promise.reject(error)
});
5. 跨域访问需要发送cookie时
跨域访问需要发送cookie时一定要加
axios.defaults.withCredentials = true;