【问题标题】:Stop Rack session setting a cookie for all pages停止机架会话为所有页面设置 cookie
【发布时间】:2012-11-11 03:08:41
【问题描述】:

在我的 Sinatra 应用中,我正在使用机架会话

use Rack::Session::Cookie, :secret => ENV['SECRET']

它似乎为每次页面加载设置了一个 cookie,即使我没有在会话中设置任何内容。如果设置了会话,有没有办法将其更改为仅设置 cookie?

【问题讨论】:

    标签: ruby session cookies sinatra rack


    【解决方案1】:

    Rack::Session::Cookie 将会话保存到编组的 Ruby Hash

    基本上,它正在编组您的会话并将其保存到 cookie 中。

    它不在乎你的会话是空的Hash
    无论如何,它都会被编组并保存到 cookie 中。

    您真的需要将会话保存在 cookie 中吗?

    也许use Rack::Session::Pool 将您的会话保存在内存池中?
    然后它只会设置一次cookie。

    【讨论】:

    • 实际上,Rack::Session::Pool 会在每次会话加载(从读取或写入)时设置一个cookie,除非:skip或@987654326 @(而不是:renew)会话选项是true。因此,即使您不更改会话数据而只是读取它,Rack 仍然会在每次请求时将 cookie 中相同的旧会话 id 发送回客户端。设置此会话 ID 的 HTTP 标头通常约为 100-150 字节,因此与可能为几千字节的封送对象相比,它的开销最小。
    猜你喜欢
    • 2015-12-27
    • 1970-01-01
    • 1970-01-01
    • 2011-12-21
    • 1970-01-01
    • 2017-02-04
    • 1970-01-01
    • 2019-11-18
    • 1970-01-01
    相关资源
    最近更新 更多