Spring 4 Session Cook ie изменить поле - PullRequest
0 голосов
/ 27 января 2020

Я использую Spring 4 и создаю сессию, используя request.getSession()

Я наблюдал, как создается SESSION cook ie. Заголовок ответа содержит следующее:

Set-Cookie: SESSION=ZTgwZWMxMDItOTA1MC00ZTZjLWIxMmUtZmM3NmQxNzJmNDBm; Path=/myApp/; Secure; HttpOnly

В созданном Cook ie мне нужно SameSite = Lax. В настоящее время значение SameSite отсутствует.

Поэтому в своем коде я предпринял следующую попытку перезаписать SESSION cook ie.

// request is of type HttpServletRequest
// response is of type HttpServletResponse
HttpSession session = request.getSession(); 
String base64value = Base64.getEncoder().encodeToString(session.getId().getBytes());
response.setHeader("Set-Cookie","SESSION=" + base64value + ";path=/myApp/ ;HttpOnly ;Secure;SameSite=lax");

Но теперь создано 2 куки SESSION. , и это можно увидеть в заголовках ответов:

Set-Cookie: SESSION=ZTgwZWMxMDItOTA1MC00ZTZjLWIxMmUtZmM3NmQxNzJmNDBm;path=/myApp/ ;HttpOnly ;Secure;SameSite=lax
Set-Cookie: SESSION=ZTgwZWMxMDItOTA1MC00ZTZjLWIxMmUtZmM3NmQxNzJmNDBm; Path=/myApp/; Secure; HttpOnly

Как я могу иметь всего 1 СЕССИЮ повара ie с SameSite = Lax с Spring 4?

1 Ответ

0 голосов
/ 31 января 2020

Вы вручную отправляете заголовок Set-Cookie, который дублирует заголовок, установленный администратором сеансов Spring.

Если Spring 4 позволяет установить атрибут SameSite для сеанса cook ie (к сожалению, я не могу найти документы для этого, поэтому не могу быть уверен), тогда я ожидаю, что это будет в вашем web.xml:

<session-config>
    <cookie-config>
        <http-only>true</http-only>
        <secure>true</secure>
        <!-- Maybe there's a SameSite option? -->
    </cookie-config>
</session-config>
...