2016-12-02 75 views
2

我使用的是基于Cookie的会话存储的Rails 4,发现Rails 4每次刷新页面时都会给我一个不同的cookie,但它仍可以识别我。为什么Rails为同一会话的每个请求更改Set-Cookie头

将它与使用Rack::Session::Cookie的另一个机架应用程序相比较,它将只发送Set-Cookie作为第一个请求,直到对会话数据进行一些更改。

他们为什么设计不同?背后有什么理由吗?

回答

0

这是因为这样的Rails处理会话存储和Cookie加密:

  1. 默认的会话存储将尝试会话数据写入到已经访问会话的任何请求加密的Cookie(或者读取从它或写入),
  2. 加密值即使变化的时候,纯文本价值也没有,
  3. 加密恰好达到这是负责检查,如果cookie的值发生了变化,以避免冗余代码之前Set-Cookie头。

我进入更详细的回答这个问题:Why is rails constantly sending back a Set-Cookie header?

相关问题