axios拦截不到自定义响应头

2,436 阅读1分钟

获取不到自定义响应头

在做登录功能的时候 调用登录接口 想获取Header里的Token 然而发现里面并没有Token:

在用Postman测试的时候和浏览器NetWork里发现是正常的,但是控制台输出时却没有: 原因 浏览器默认只能访问以下几种响应头:

Cache-Control

Content-Length

Content-Type

Expires

Pragma

若想让浏览器能访问到其它响应头 则需在服务器上设置Access-Control-Expose-Headers 其值为要被访问的响应头的属性名

解决方法 在拦截器里进行配置 添加响应头

public class JWTAuthenticationFilter extends UsernamePasswordAuthenticationFilter {

...

@Override
protected void successfulAuthentication(HttpServletRequest request,HttpServletResponse response,FilterChain chain,Authentication authResult) throws IOException {
   
    ...

    // 让浏览器能访问到其它响应头
    response.addHeader("Access-Control-Expose-Headers","token");

    ...
}

...

成功拿到token:

这是JWT设置方式,如果后台使用其他框架可以自行百度。

这次出现问题的主要原因是,后台框架更换,导致没有及时暴露响应头。