HTTP协议是无状态协议。但是对于商业网站,需要在不同页面之间维护会话信息。在许多情况下,使用Cookie是记住其他信息的最有效方法。

Cookie怎么运作?

您的服务器以cookie的形式向访问者的浏览器发送一些数据。浏览器可以接受cookie。如果是这样,它将以纯文本记录的形式存储在访问者的硬盘上。现在,当访问者到达您网站上的另一个页面时,就可以检索该cookie。一旦检索到,您的服务器就知道存储了什么。

Cookies是五个可变长度字段的纯文本数据记录-

  • Expires -  Cookie到期的日期。如果为空,则cookie将在访问者退出浏览器时过期。

  • Domain - 您站点的域名。

  • Path - 设置cookie的目录或网页的路径。

  • Secure - 如果此字段包含"Secure"一词,则只能使用安全服务器检索cookie。如果此字段为空,则不存在此类限制。

  • Name=Value - Cookies以键和值对的形式设置和检索。

在Ruby中处理Cookie

您可以创建一个命名的cookie对象,并在其中存储任何文本信息。要将其发送到浏览器,请在对 CGI.out 的调用中设置 cookie 标头。

#!/usr/bin/ruby require "cgi" cgi=CGI.new("html4") cookie=CGI::Cookie.new('name' => 'mycookie', 'value' => 'Zara Ali', 'expires' => Time.now + 3600) cgi.out('cookie' => cookie) do cgi.head + cgi.body { "Cookie stored" } end

用户下次返回此页面时,可以检索设置的cookie值,如下所示-

#!/usr/bin/ruby require "cgi" cgi=CGI.new("html4") cookie=cgi.cookies['mycookie'] cgi.out('cookie' => cookie) do cgi.head + cgi.body { cookie[0] } end

Cookies使用类CGI::Cookie的单独对象表示 -

属性 返回值
name cookie名称
value cookie值数组
path cookie的路径
domain 域名
expires 过期时间
secure  True if secure cookie

参考链接

https://www.learnfk.com/ruby/ruby-cgi-cookies.html