我正在使用本教程http://rubylearning.com/blog/2009/09/30/cookie-based-sessions-in-sinatra/中标题为“A Slightly Bigger Example”的示例中的代码来弄清楚如何将 cookie 发送到 Sinatra 应用程序,但我不知道如何正确设置值
当我在应用程序中将名称设置为“brandon”时,它会创建一个 cookie,其值BAh7BiIJdXNlciIMYnJhbmRvbg%3D%3D%0A
是值的 url 编码 ( http://ostermiller.org/calc/encode.html )BAh7BiIJdXNlciIMYnJhbmRvbg==
使用该值,我可以正确地将 cookie 发送到应用程序
curl -b "rack.session=BAh7BiIJdXNlciIMYnJhbmRvbg==" localhost:9393
我很确定该值是会话的 ruby 哈希的 base64 编码,因为文档(http://rack.rubyforge.org/doc/classes/Rack/Session/Cookie.html)说
session 是一个 Ruby Hash,存储为 base64 编码的编组数据集:key(默认值:rack.session)。
我认为这意味着我所要做的就是 base64 编码{"user"=>"brandon"}
并在 curl 命令中使用它。不幸的是,这创造了不同于BAh7BiIJdXNlciIMYnJhbmRvbg==
. 接下来,我尝试获取 base64 编码值并在线上在各种 base64 解码器上对其进行解码,但这会导致出现奇怪的字符(框符号等),因此我不知道如何重新创建该值以对其进行编码。
所以我的问题是你知道我需要什么字符/格式来获得正确的 base64 编码和/或你知道另一种使用 curl 传递值的方法,以便它将注册为 Sinatra 应用程序的正确 cookie?