umi-request
antd pro 拉下来的request,用的是
import { extend } from 'umi-request';
const request = extend({
errorHandler, // 默认错误处理
credentials: 'include', // 默认请求是否带上cookie
timeout: 30000,
headers: {
'Content-Type': 'application/json',
Accept: 'application/json',
token:localStorage.getItem("token")
},
throwErrIfParseFail: true, //当JSON.parse(res) 出错时,抛出错误
});
想要每次请求带上token,就在headers里设置 token:localStorage.getItem("token")
但是有点bug,有时候会发现token 明明获取到了,但是headers上写不进去很奇怪,我把localStorage.getItem("token") 换成一个函数调用,然后函数里面log出来token,是有的,但是就是写不进去
解决方法是加个拦截器
request.interceptors.request.use(async (url, options) => {
if (
options.method === 'post' ||
options.method === 'put' ||
options.method === 'delete' ||
options.method === 'get'
) {
const headers = {
'Content-Type': 'application/json',
Accept: 'application/json',
token:localStorage.getItem("token")
};
return {
url,
options: { ...options, headers },
};
}
});
每次请求都在发出前,手动拦截一下,手动加上token
网友评论