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

IT 文章7天前更新 小编
0 0 0

当我在使用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)
})

后台代码如下:

ad

程序员导航

优网导航旗下整合全网优质开发资源,一站式IT编程学习与工具大全网站

@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 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问题解决
[v_act]解决办法[/v_act]
只需要在response.setHeader前加上如下代码即可:

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

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

© 版权声明

相关文章

暂无评论

  • Loong
    Loong 游客

    你好,我这两个都设置了,为什么res里还是取不到,为空

    湖南岳阳市
    回复