Ruby CGI Cookies

HTTP协议是无状况协议。但关于一个商业网站,它需求坚持不同的页面间的会话信息。

如用户在网站注册过程中需求跳转页面,但又要确保之前填写的信息部丢掉。

这种情况下 Cookie 很好的帮咱们处理了问题。


Cookie 是怎么作业的?

简直一切的网站规划者在进行网站规划时都运用了Cookie,因为他们都想给阅读网站的用户供给一个更友爱的、人文明的阅读环境,一起也能愈加精确地搜集拜访者的信息。

写入和读取

Cookies调集是附归于Response目标及Request目标的数据调集,运用时需求在前面加上Response或Request。

用于给客户机发送Cookies的语法一般为:

当给不存在的Cookies调集设置时,就会在客户机创立,假如该Cookies己存在,则会被替代。因为Cookies是作为HTTP传输的头信息的一部分发给客户机的,所以向客户机发送Cookies的代码一般放在发送给阅读器的HTML文件的符号之前。

假如用户要读取Cookies,则有必要运用Request目标的Cookies调集,其运用办法是: 需求留意的是,只需在服务器未被下载任何数据给阅读器前,阅读器才能与Server进行Cookies调集的数据交换,一旦阅读器开端接纳Server所下载的数据,Cookies的数据交换则中止,为了防止过错,要在程序和前面加上response.Buffer=True。

调集的特点

  • 1.Expires特点:此特点用来给Cookies设置一个期限,在期限内只需翻开网页就能够调用被保存的Cookies,假如过了此期限Cookies就主动被删去。如: 设定Cookies的有效期到2004年4月1日,届时将主动删去。假如一个Cookies没有设定有效期,则其生命周期从翻开阅读器开端,到封闭阅读器完毕,每次运转后生命周期将完毕,下次运转将重新开端。
  • 2.Domain特点:这个特点界说了Cookies传送数据的唯一性。若只将某Cookies传送给_blank">搜狐主页时,则可运用如下代码:
  • 3.Path特点:界说了Cookies只发给指定的途径恳求,假如Path特点没有被设置,则运用运用软件的缺省途径。
  • 4.Secure特点:指定Cookies能否被用户读取。
  • 5、Name=Value : Cookies是以键值对的方式进行设置和检索的。

Ruby 中处理Cookies

你能够创立一个名为 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

CGI::Cookie目标实例化时包括以下参数:

参数 描绘
name 规则 cookie 的称号。
value 规则 cookie 的值。
expire 规则 cookie 的有效期。
path 规则 cookie 的服务器途径。
domain 规则 cookie 的域名。
secure 规则是否经过安全的 HTTPS 连接来传输 cookie。