Кук: SameSite=None не работает из-за устаревшей версии Rack

Привет,

Поддержка значения sameSite ‘None’ была добавлена (мной) несколько недель назад. Теперь вы можете выбрать ‘None’ в настройках куки. Однако после изменения и сохранения этого параметра вход в систему становится невозможным. Запрос сессии/CSRF возвращает ошибку 500.

Я отследил эту ошибку, и в логах указано:
Failed to handle exception in exception app middleware : Invalid SameSite value: "None"
в файле:
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-2.0.8/lib/rack/utils.rb:260:in add_cookie_to_header’`

Как выяснилось, текущая версия Rack (2.0.8) не поддерживает значение sameSite ‘None’ как настройку. Однако она поддерживается в самой последней версии Rack.

В файле Gemfile проекта есть комментарий с указанием на то, что обновление Rack может привести к сбоям:

Поэтому я предпочел бы, чтобы обновление выполнил кто-то, кто обладает более глубокими знаниями о проекте, чем я.

Я считаю эту проблему критической, поскольку при изменении настроек куки на “None” вход в систему становится невозможным для всех пользователей, и исправить это можно только через базу данных.

Может ли кто-нибудь, пожалуйста, либо исправить это, либо помочь? Я не очень хорошо разбираюсь в Ruby.

1 лайк

Привет, @dave0688 — спасибо, что подняли этот вопрос. Я только что убрал опцию samesite=none, чтобы избежать ошибки сервера.

Обновление Rack находится в нашем поле зрения, но это будет довольно сложно. У меня нет точного срока.

Как только обновление будет выполнено, мы с радостью вернём настройку сайта SameSite=none.

6 лайков

@dave0688 FYI у нас теперь обновлён rack, поэтому я снова применил ваш коммит

4 лайка