侧边栏壁纸
  • 累计撰写 106 篇文章
  • 累计创建 3 个标签
  • 累计收到 19 条评论
标签搜索

目 录CONTENT

文章目录

【转】axios 401/403/404 response拦截器拦截到的error.response值为undefined的解决方案

卑微幻想家
2021-12-02 / 0 评论 / 0 点赞 / 857 阅读 / 414 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-03-24,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

问题发生场景:

    vue中前端请求用axios,请求成功会正常返回response,但是如果遇到需要验证的API时需要token,如果token为空或者过期时,会返回401,并报跨域问题,但是在response的错误拦截中获取的error.response是undefined。

问题根源:
问题根源其实与前端无关,这里放一张图片,图片如下
image.png

当我们发送一个请求到后端时,后端会先走filter层,然后是Interceptor层,再就是控制层和切面层。之所以发生401时无法获取到error.response是因为后端设置的cors允许跨域放在了切面层,验证token却在拦截器层,当我们发送一个过期的token的时候,首先会在拦截器层验证token的有效性,如果无效则返回,这时候都还没走到切面层设置的允许跨域,所以报了跨域问题,并且无法获取error.response。

解决方案:

    后端需要把允许跨域设置在filter层就OK了。

0

评论区