为什么@CookieValue返回的cookie详细信息为null?

时间:2019-03-17 13:56:10

标签: spring spring-mvc httpcookie

我有一个控制器,试图在其中使用

获取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)是正确的,而其他详细信息则不正确。为什么会这样?

1 个答案:

答案 0 :(得分:1)

因为浏览器使用Set-Cookie标头从响应中设置的cookie接收了所有这些信息,但是它仅将cookie的 value 发送到服务器在Cookie标头中。

请参见https://en.wikipedia.org/wiki/HTTP_cookiehttps://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cookie

请注意,顺便说一句,注释的名称为CookieValue。这个名字是有原因的。