【发布时间】:2020-09-28 19:13:47
【问题描述】:
在 Rails 6.0.3.1 中,有没有办法在不使用 the secure headers gem 之类的 gem 的情况下本地设置 Rails 会话 cookie 相同的站点属性?
【问题讨论】:
标签: ruby-on-rails session-cookies ruby-on-rails-6
在 Rails 6.0.3.1 中,有没有办法在不使用 the secure headers gem 之类的 gem 的情况下本地设置 Rails 会话 cookie 相同的站点属性?
【问题讨论】:
标签: ruby-on-rails session-cookies ruby-on-rails-6
把这个before_action扔到你的ApplicationController中:
response.headers['SameSite'] = 'Lax'
编辑:我的回答是针对 Rails 5.2,错。在您的 session_store.rb 文件中设置same_site: :lax确实有效。
【讨论】:
Rails.application.config.session_store :cookie_store, key: 'myKey', same_site: :strict
我没有针对我的具体问题的解决方案,因此我升级了我的应用程序以使用 Rails 6.1,它有一个名为 new_framework_defaults_6_1.rb 的新初始化文件,其中包含以下内容。解决我的问题的不言自明的 cmets。 我不相信每个 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
【讨论】: