封装部分代码
const request = extend({
prefix: '/api',// 路径前缀
errorHandler, // 默认错误处理
credentials: 'include', // 默认请求是否带上cookie
timeout: 30000,
});
request.interceptors.request.use(async (url, options) => {
let hasToken = getToken()
let refreshToken = getRefreshToken()
type headerType = {
Authorization: string | null,
Timestamp: string | null,
Sign: string | null,
}
let headers: headerType = {
Authorization: null,
Timestamp: null,
Sign: null,
};
if (!hasToken && refreshToken) {
// 重新输入token
}
if (hasToken) {
headers.Authorization = 'Bearer ' + hasToken
}
const timestamp = new Date().getTime().toString();
const sign = md5(timestamp + 'coursezjer_admin');
headers.Sign = sign;
headers.Timestamp = timestamp;
return {
url,
options: {
...options,
headers
},
};
});
调用部分代码
request.get('/admin/verification/captcha')
如果这样写就会报404,如果将headers中的Sign或者Timestamp去掉任意一个就是正常的,请问是有什么限制吗,还是哪里写错了
之后我使用定值,将Timestamp设置成固定值,也可以调通
这是调通的截图
这是变量调用接口的截图
从前端代码来看没有问题。接口谁提供的,你问问。是不是后端处理你的请求头的sign 和 timestamp 的过程中出错了。只能这样猜一下了。你用postman apifox这种工具调试一下,就能确定是不是前端的问题了。