You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby 2.7中使用CGI::Cookie.parse如何正确获取Cookie值

问题原因

这是Ruby 2.7版本标准库CGI::Cookie的已知实现bug:该类继承自Array,2.7版本中#value方法的实现错误直接返回了对象本身,和官方文档描述的行为不符。

正确获取Cookie值的方法

你可以用以下几种方式在仅依赖标准库的前提下拿到解码后的Cookie值:

单值Cookie场景(绝大多数情况)

直接取数组第一个元素再做URL解码即可:

require 'cgi'
require 'uri'

c = CGI::Cookie.parse('test=%66%6f%6f')['test']
cookie_value = URI.decode_www_form_component(c[0])
p cookie_value # => "foo"

也可以直接调用to_s方法后解码,效果一致:

cookie_value = URI.decode_www_form_component(c.to_s)

多值Cookie场景(同个Cookie Key对应多个值)

遍历整个数组逐个解码即可:

cookie_values = c.map { |item| URI.decode_www_form_component(item) }

补充说明

该bug在Ruby 3.0及以上版本已经被修复,#value方法可以正常返回Cookie值数组。

内容的提问来源于stack exchange,提问作者iBug

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 14:45:00