Rails 会话,如何将 SameSite 设置为 Lax

Rails session, how to set SameSite to Lax

在 Rails 6.0.3.1 中,有没有办法在不使用 gem(例如 the secure headers gem)的情况下本地设置 Rails 会话 cookie 相同站点属性?

我没有针对我的特定问题的解决方案,所以我升级了我的应用程序以使用 Rails 6.1,它有一个名为 new_framework_defaults_6_1.rb 的新初始化程序文件,其中包含以下内容。解决我的问题的不言自明的评论。 我不相信每个 Rails 应用程序都应该升级到 Rails 6.1 来解决这个问题并且 Rails 团队需要紧急解决这个问题所以我发布了我的答案但不希望接受它有人可能对其他寻求解决此问题的人有更合适的答案。

# Specify cookies SameSite protection level: either :none, :lax, or :strict.
#
# This change is not backwards compatible with earlier Rails versions.
# It's best enabled when your entire app is migrated and stable on 6.1.
Rails.application.config.action_dispatch.cookies_same_site_protection = :lax

将此 before_action 放入您的 ApplicationController:

response.headers['SameSite'] = 'Lax'

编辑:我的回答是Rails 5.2,错误。在 session_store.rb 文件中设置 same_site: :lax 有效。