Ruby - CGI Cookies


HTTP协议是一种无状态协议。但对于商业网站来说,需要维护不同页面之间的会话信息。例如,一个用户注册在完成许多页面后结束。但如何在所有网页上维护用户的会话信息。

在许多情况下,使用 cookie 是记住和跟踪偏好、购买、佣金以及更好的访问者体验或网站统计所需的其他信息的最有效方法。

怎么运行的?

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

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

  • 过期- cookie 过期的日期。如果此项为空,则当访问者退出浏览器时,cookie 将过期。

  • - 您网站的域名。

  • Path - 设置 cookie 的目录或网页的路径。如果您想从任何目录或页面检索 cookie,则该字段可能为空。

  • 安全- 如果此字段包含单词“安全”,则只能通过安全服务器检索 cookie。如果此字段为空,则不存在此类限制。

  • 名称 = 值- Cookie 以键和值对的形式设置和检索。

在 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

需要“cgi”
cgi = CGI.new("html4")
cookie = cgi.cookies['mycookie']
cgi.out('cookie' => cookie) 执行
   cgi.head + cgi.body { cookie[0] }
结尾

Cookie 使用 CGI::Cookie 类的单独对象表示,包含以下访问器 -

属性 返回值
姓名 饼干名称
价值 cookie 值的数组
小路 cookie 的路径
领域 域名
过期 过期时间(作为 Time 对象)
安全的 True 如果安全 cookie
ruby_web_applications.htm