HTTP协议是无状态协议。但对于一个商业网站,它需要保持不同的页面间的会话信息。
如用户在网站注册过程中需要跳转页面,但又要保证之前填写的信息部丢失。
这种情况下 Cookie 很好的帮我们解决了问题。
Cookies集合是附属于Response对象及Request对象的数据集合,使用时需要在前面加上Response或Request。
用于给客户机发送Cookies的语法通常为:
当给不存在的Cookies集合设置时,就会在客户机创建,如果该Cookies己存在,则会被代替。由于Cookies是作为HTTP传输的头信息的一部分发给客户机的,所以向客户机发送Cookies的代码一般放在发送给浏览器的HTML文件的标记之前。
如果用户要读取Cookies,则必须使用Request对象的Cookies集合,其使用方法是: 需要注意的是,只有在服务器未被下载任何数据给浏览器前,浏览器才能与Server进行Cookies集合的数据交换,一旦浏览器开始接收Server所下载的数据,Cookies的数据交换则停止,为了避免错误,要在程序和前面加上response.Buffer=True。
你可以创建一个名为 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。 |
RubyGems 是 Ruby 的一个包管理器,它提供一个分发 Ruby 程序和库的标准格式,还提供一个管理程序包安装的工具。RubyGems 旨在方...
数据类Kotlin 可以创建一个只包含数据的类,关键字为data:data class User(val name: String, val age: Int)编译器会自动的从主...
上一章节我们已经了解了 Go 语言的基本组成结构,本章节我们将学习 Go 语言的基础语法。 Go 标记 Go 程序可以由多个标记组成,可...