在 Rails6.0.3.1 中 有没有办法在本地设置 Rails 会话 cookie 同一站点属性,而无需使用诸如安全标头 gem 之类的 gem?
在应用程序控制器中抛出以下before_action
:
response.headers['SameSite'] = 'Lax'
编辑:我的答案是针对Rails 5.2的,而且是错误的。在session_store.rb文件中设置same_site: :lax
确实有效。
我没有解决特定问题的方法,所以我将我的应用程序升级为 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