即使 Postman 正确显示 cookie,浏览器也不会存储 JWT cookie
Browser doesn't store the JWT cookie even though Postman shows the cookie correctly
我尝试使用 spring 构建一个 Web 应用程序并做出反应。在授权中,我发送了一个这样的 JWT cookie:
final String jwt = jwtUtil.generateToken(user);
Cookie jwtCookie = new Cookie("jwt", jwt);
jwtCookie.setHttpOnly(true);
jwtCookie.setPath("/");
response.addCookie(jwtCookie);
return new ResponseEntity<String>(jwt, HttpStatus.OK);
当我在 Postman 中发送请求时,cookie 正确显示:
Postman screenshot
现在我想通过这样的反应来验证自己:
return axios
.post("http://localhost:8080/auth", {}, {
auth: {
username: uname,
password: pass
}
})
.then(response => {
console.log(response)
return response.data;
});
但即使授权成功,我什至可以将jwt-token存储在本地存储中,cookie也不会出现在浏览器中。
有没有人知道如何解决这个问题?
感谢您的帮助!
这是 CORS 的问题。您必须将 withCredentials
标志设置为 true
才能进行 cookie 交换。
axios.defaults.withCredentials = true;
并允许服务器端的凭据:
registry
.addMapping("/**")
.allowedOrigins("http://localhost:3000")
.allowCredentials(true);
我尝试使用 spring 构建一个 Web 应用程序并做出反应。在授权中,我发送了一个这样的 JWT cookie:
final String jwt = jwtUtil.generateToken(user);
Cookie jwtCookie = new Cookie("jwt", jwt);
jwtCookie.setHttpOnly(true);
jwtCookie.setPath("/");
response.addCookie(jwtCookie);
return new ResponseEntity<String>(jwt, HttpStatus.OK);
当我在 Postman 中发送请求时,cookie 正确显示: Postman screenshot
现在我想通过这样的反应来验证自己:
return axios
.post("http://localhost:8080/auth", {}, {
auth: {
username: uname,
password: pass
}
})
.then(response => {
console.log(response)
return response.data;
});
但即使授权成功,我什至可以将jwt-token存储在本地存储中,cookie也不会出现在浏览器中。
有没有人知道如何解决这个问题?
感谢您的帮助!
这是 CORS 的问题。您必须将 withCredentials
标志设置为 true
才能进行 cookie 交换。
axios.defaults.withCredentials = true;
并允许服务器端的凭据:
registry
.addMapping("/**")
.allowedOrigins("http://localhost:3000")
.allowCredentials(true);