在 Ruby 的 CGI(***mon Gateway Interface) 编程中,Cookie 是一种用于在客户端(浏览器)和服务器之间存储和传递小型数据的机制,常用于会话管理、用户身份验证或保存用户偏好。Ruby 的 cgi 库提供了 CGI::Cookie 类来创建、设置和读取 Cookies。以下是对 Ruby CGI 中 Cookie 使用的中文讲解,涵盖核心方法、创建与读取 Cookies、示例代码及注意事项,力求简洁清晰,并避免重复之前的内容(如 CGI 编程概述)。
1. Cookie 简介
Cookies 是存储在浏览器中的键值对,由服务器通过 HTTP 响应发送,浏览器在后续请求中自动回传。Ruby 的 CGI 模块通过 CGI::Cookie 类管理 Cookies,支持设置属性(如过期时间、路径)并解析客户端发送的 Cookies。
用途:
- 保存用户会话信息(如用户 ID)。
- 跟踪用户行为或偏好。
- 实现简单的状态管理。
2. CGI::Cookie 类
CGI::Cookie 用于创建和操作 Cookie 对象,常用属性包括:
-
name:Cookie 的名称(必需)。 -
value:Cookie 的值(字符串或字符串数组)。 -
expires:过期时间(Time对象)。 -
path:Cookie 有效的路径(如/表示整个站点)。 -
domain:Cookie 有效的域名。 -
secure:布尔值,仅 HTTPS 连接可用(默认false)。 -
httponly:布尔值,禁止 JavaScript 访问 Cookie(默认false)。
创建 Cookie
require 'cgi'
cookie = CGI::Cookie.new(
'name' => 'user_id',
'value' => '12345',
'expires' => Time.now + 3600, # 1 小时后过期
'path' => '/',
'secure' => true,
'httponly' => true
)
3. 设置 Cookie
Cookies 通过 CGI#out 或 CGI#header 方法在 HTTP 响应头中设置。
使用 cgi.out
#!/usr/bin/ruby
require 'cgi'
cgi = CGI.new
cookie = CGI::Cookie.new('name' =>