Поле изменения файла cookie Spring 4 Session

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

Я заметил, что создается файл cookie SESSION. Заголовок ответа содержит следующее:

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

В созданном файле cookie мне нужно SameSite=Lax. В настоящее время значение SameSite отсутствует.

Итак, в моем коде я сделал следующую попытку перезаписать файл cookie SESSION.

// 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 файла cookie SESSION, и их можно увидеть в заголовках ответов:

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

Как я могу иметь только 1 файл cookie SESSION с SameSite = Lax с Spring 4?


person user5155835    schedule 27.01.2020    source источник


Ответы (1)


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

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

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