#scala #cookies #playframework #samesite
#scala #файлы cookie #игровая структура #тот же сайт
Вопрос:
Я устанавливаю cookie через заголовки в Scala (2.10) / Play Framework (2.3). Я подумываю о том, чтобы сделать это таким образом, если мне придется обновить фреймворк, чтобы использовать встроенные функции, которые я не могу сделать на данный момент. Ниже приведен мой код для справки:
Test URL: https://elbtest.s2d6.com/x/?x=camp;z=samp;v=7100096
val cookieString = "949413017=533c892b32cf4a46961a38f8c56b33eb320412596|6386|323064|7100096|14988;SameSite=None;Expires=Wed, 30 Sep 2020 12:45:30 GMT;Path=/;Domain=s2d6.com;Secure"
val finalURL = "https://www.google.com/"
resp = Redirect(finalURL).withHeaders(SET_COOKIE -> cookieString)
В браузере устанавливается вышеупомянутый файл cookie ‘949413017‘, но вместе с другим файлом cookie с именем ‘SameSite’. Из-за этого я не могу получить доступ к своему cookie в следующих запросах. PFA ответ в браузере:
Версия Chrome: Версия 84.0.4147.89 (официальная сборка) (64-разрядная версия)
ОС: Ubuntu 16.04.6 LTS (XenialXenial Xerus)
Любая помощь в понимании того, почему это происходит, высоко ценится.
Заранее большое спасибо!
Комментарии:
1. Справа от раздела «Заголовки ответов» должна быть кнопка «просмотреть источник»; это покажет необработанные байты, полученные с сервера. Не могли бы вы сделать скриншот или скопировать-вставить это? Если анализатор файлов cookie Chrome неправильно обрабатывает необработанные данные, проанализированная версия мало что вам скажет.
Ответ №1:
Вы вызываете, withHeaders
используя SET_COOKIE
. Вы должны использовать встроенный файл cookie:
Redirect(finalURL).withCookies(Cookie("theme", "blue"))
См https://blog.knoldus.com/using-cookies-in-play-framework / для примера.
Комментарии:
1. Будет, я использую версию play 2.3, как я уже упоминал в первой строке моего вопроса. Play 2.3 не поддерживает флаг samesite. Я не могу его обновить. Следовательно, я использую заголовки для установки cookie и добавления этого флага.
Ответ №2:
Просто подсказка, если мы используем SameSite=None
где-либо в значении Set-Cookie header
, то Play Framework ошибочно рассматривает это как начало другого файла cookie !
Как насчет использования стандартного заголовка Set-Cookie
?
Set-Cookie: flavor=choco; SameSite=None; Secure
Обратитесь к https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite