我的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;
}
)