Javascript axios拦截器响应未定义
我正在尝试注销我的用户,一旦他们获得401。我正在使用axios从api返回数据 我环顾四周,发现了相同的axios.interceptors.responseJavascript axios拦截器响应未定义,javascript,vue.js,axios,interceptor,Javascript,Vue.js,Axios,Interceptor,我正在尝试注销我的用户,一旦他们获得401。我正在使用axios从api返回数据 我环顾四周,发现了相同的axios.interceptors.response axios.interceptors.response.use( response => response, error => { const {status} = error.response; if (status === 401 ) { store.dispatch('sna
axios.interceptors.response.use(
response => response,
error => {
const {status} = error.response;
if (status === 401 ) {
store.dispatch('snackBar', snackbarObj)
}
return Promise.reject(error);
}
)
似乎我的错误。响应未定义。我不知道怎么了?有什么想法吗
您使用Axios执行的请求没有得到响应,因为在执行飞行前
选项
请求时,浏览器收到401个未经授权的响应,导致您尝试执行的请求出现网络错误
这与工作方式以及后端如何处理选项
请求有关。要了解后端服务器应如何处理飞行前请求,了解
后端服务器不应检查选项
请求的身份验证,它应验证该请求是否是向接受跨域请求的端点发出的,如果是,则返回成功代码
然后,浏览器将自动处理最初预期的请求
这样,如果用户不再经过身份验证,Axios拦截器将收到401错误代码
无耻的自我推广,我发布了一个简单的Axios插件,名为,它帮助在更大的应用程序中抽象Axios拦截器的使用。它提供了一个在重新发送请求之前再次尝试身份验证的示例。如果飞行前
选项
请求成功结束,响应对象也将未定义,但下一次获取/发布
的响应不包含访问控制允许来源
http头
在我的例子中,为nginx 401响应添加
访问控制允许来源
头解决了问题这不是最佳做法,但我是这样解决的
axios.interceptors.response.use(
response => response,
error => {
if (typeof error.response === "undefined") {
// do somthing
}
return Promise.reject(error);
}
)
对于仍在努力解决此问题的用户,请使用以下错误处理以更好地控制
if (error.response) {
// Request made and server responded
console.log(error.response.data);
console.log(error.response.status);
console.log(error.response.headers);
} else if (error.request) {
// The request was made but no response was received
console.log(error.request);
} else {
// Something happened in setting up the request that triggered an Error
console.log('Error', error.message);
}
return Promise.reject(error);
后端应该如何处理它?我在邮件头中发送一个令牌。因此,在浏览器控制台上,它会在上面的图像和网络选项卡上的响应中显示它的内容,“jwt验证失败”-ronoc4 7小时前delete@ronoc4我用飞行前请求的附加信息更新了我的答案。没用,因为整个问题是:我们缺少信息来
//做些什么
如果响应是未定义的
,非常感谢,这是一个很好的解决方案,我也面临着同样的问题,并通过设置访问控制允许从express开始。