我有一个控制器,试图在其中使用
获取cookie的值。@PostMapping(SIGNOUT)
@ResponseStatus(value=HttpStatus.OK)
public void signoutUser(@CookieValue(name="acctk") Cookie cookie ,final HttpServletRequest request, final HttpServletResponse response) {
System.out.println("value: " + cookie.getValue());
System.out.println("path: " + cookie.getPath());
System.out.println("domain: " + cookie.getDomain());
System.out.println("max-age: " + cookie.getMaxAge());
System.out.println("is secure: " + cookie.getSecure());
}
控制器返回:
value: 3C6E523D68F35294D3D6AC099CDA60EB
path: null
domain: null
max-age: -1
is secure: false
随请求发送的cookie:
acctk=3C6E523D68F35294D3D6AC099CDA60EB; Max-Age=2592000; Expires=Tue, 16-Apr-2019 13:52:12 GMT; Path=/api/v1; HttpOnly
因此,结果是,只有cookie值(和secure
)是正确的,而其他详细信息则不正确。为什么会这样?
答案 0 :(得分:1)
因为浏览器使用Set-Cookie
标头从响应中设置的cookie接收了所有这些信息,但是它仅将cookie的 value 发送到服务器在Cookie
标头中。
请参见https://en.wikipedia.org/wiki/HTTP_cookie和https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cookie。
请注意,顺便说一句,注释的名称为CookieValue
。这个名字是有原因的。