Почему детали cookie, возвращаемые @CookieValue, не имеют значения? - PullRequest
1 голос
/ 17 марта 2019

У меня есть контроллер, в котором я пытаюсь получить значения 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 Ответ

1 голос
/ 17 марта 2019

Поскольку браузер получает всю эту информацию из файла cookie, установленного в ответе , используя заголовок Set-Cookie, но он только отправляет значение cookie на сервер в Cookie заголовок.

См. https://en.wikipedia.org/wiki/HTTP_cookie, и https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cookie.

Обратите внимание, что аннотация называется CookieValue. Для этого имени есть причина.

...