axios跨域请求响应的headers中没有Authorization问题解决

Java技术 潘老师 1年前 (2021-01-28) 1641 ℃ (1) 扫码查看

当我在使用axios发送跨域请求时,发现请求的响应头中虽然设置的Authorization但是还是获取不到,axios请代码如下:

export async function login(user){
    var response = await axios.post(server_url+"/api-user/login",user);
    return response;
}

调用如下:

login(this.ruleForm).then(res=>{
    console.log(res);
    console.log("token="+res.headers.authorization)
})

后台代码如下:

@RestController
@RequestMapping("/api-user")
@CrossOrigin(origins = {"http://localhost:8081"},allowCredentials="true")
public class AdUserController {
    private Logger logger = LoggerFactory.getLogger(AdUserController.class);
    @Autowired
    private AdUserService adUserService;
    @Autowired
    private JwtUtil jwtUtil;

    //    列出所有后台用户
    @GetMapping("listAllUsers")
    public ResponseResult listAllUsers(){
        logger.info("listAllUsers-----------");
        List<AdUser> users = adUserService.listAllUsers();
        return ResponseResult.ok(users);
    }

    //    登录
    @PostMapping("login")
    @PassLogin
    public ResponseResult login(@RequestBody AdUser user,HttpServletResponse response){
        logger.info("login--------"+user.getUsername()+","+user.getPassword());
        AdUser adUser = adUserService.login(user);
        if(adUser == null){
            logger.error("登录失败");
            return ResponseResult.forbidden().setMsg("用户名或密码错误");
        }
        //签发token
        String token = jwtUtil.createToken(adUser.getUserId().toString());
        logger.info("签发的token:"+token);
        //token存入响应头
        response.setHeader("Authorization","Bearer "+token);
        return ResponseResult.ok(adUser);
    }
}

结果打印发现headers中没有Authorization:
axios跨域请求响应的headers中没有Authorization问题解决

解决办法

只需要在response.setHeader前加上如下代码即可:

response.addHeader("Access-Control-Expose-Headers","Authorization");

再次请求,效果如下:
axios跨域请求响应的headers中没有Authorization问题解决


版权声明:本站所有文章,如无特殊说明,均为本站原创。转载请务必注明文章来源,谢谢支持。
本文链接:https://www.panziye.com/java/1893.html
喜欢 (9)
请潘老师喝杯Coffee吧!】
分享 (0)
用户头像
发表我的评论
取消评论
表情 贴图 签到 代码

Hi,您需要填写昵称和邮箱!

  • 昵称【必填】
  • 邮箱【必填】
  • 网址【可选】

(1) 个小伙伴在畅所欲言
  1. 用户头像
    你好,我这两个都设置了,为什么res里还是取不到,为空
    Loong 2022-03-17 22:30 回复