axios.interceptors.request.use()不执行函数体



我的axios拦截器有问题。我简化了下面的代码,但它仍然不执行";axios.interceptors.request.use((";身体请参阅下面的代码和控制台输出以供参考。非常感谢。

import axios from 'axios'
class AuthenticationService{
setupAxiosInterceptorsJwt(token){

console.log("Setting up interceptors.")

axios.interceptors.request.use((config) => {
config.headers.authorization = token
console.log("Interceptor created.");
return config;
}, (error) => {
console.log("Failed");
return Promise.reject(error);
});

console.log("Finished.");
}
}
export default new AuthenticationService();

控制台:

Setting up interceptors.
Finished.

尝试为"成功;处理程序并拒绝错误处理程序的错误:

setupAxiosInterceptorsJwt(token) {
console.log("Setting up interceptors.")
axios.interceptors.request.use(
(config) => {
console.log("Success");
return config;
}, (error) => {
console.log("Failed");
return Promise.reject(error);
});
console.log("Finished.");
}

话虽如此,您被指定为";请求";拦截器。从技术上讲,执行console.log("Success");的处理程序是不准确的,因为请求尚未发生。你打算做一个";响应";拦截器?

setupAxiosInterceptorsJwt(token) {
console.log("Setting up interceptors.")
axios.interceptors.response.use(
(response) => {
console.log("Success");
return response;
}, (error) => {
console.log("Failed");
return Promise.reject(error);
});
console.log("Finished.");
}

无论哪种方式,都需要返回config或返回response并拒绝错误处理程序中的错误。

最后,由于请求的异步性质,console.log("Finished.");可能总是在其他console.log语句之前登录。

您必须发送一个实际的请求来检查该函数是否已执行。只有在发送实际请求之前,才会执行该功能。

分配一个类似的令牌

axios.interceptors.request.use(
(config) => {
config.headers = {
Authorization: "Bearer " + token
};
config.withCredentials = true
return config;
}
)

最新更新