【发布时间】:2021-07-27 08:13:39
【问题描述】:
我使用 Rails 后端和 React 前端。我最近使用以下命名约定将我的应用程序部署到 Heroku:app-name-frontend.herokuapp.com 和 app-name-backend.herokuapp.com,因此域是相同的。但是,当我从 api 向前端发送 cookie 时,我可以看到 cookie 正在发送但从未保存。我的 cors 设置如下:
Rails.application.config.middleware.insert_before 0, Rack::Cors do
allow do
origins 'app-name-frontend.herokuapp.com'
resource '*',
headers: :any,
methods: [:get, :post, :put, :patch, :delete, :options, :head],
credentials: true
end
end
我将我的 Cookie 设置如下:
{
value: JsonWebToken.encode(user_id: user.id),
expires: 1.day,
httponly: true,
secure: true,
same_site: :lax,
domain: :all
}
因为我的域为 :all 这意味着它应该适用于所有域和子域,并且由于两者都在域 herokuapp.com 上,Safari 不应该设置 cookie 吗?我做错了什么?
【问题讨论】:
-
尝试使用same_site::none。如果它有效,它将破坏 Chrome。在github.com/github/secure_headers 进行战利品。
标签: ruby-on-rails reactjs cookies safari