# Is CGI::Cookie::parse terribly broken?

**URL:** <https://www.ruby-forum.com/t/is-cgi-parse-terribly-broken/143913>\
**Category:** Ruby\
**Created:** [July 23, 2008, 8:00pm UTC](https://www.ruby-forum.com/t/is-cgi-parse-terribly-broken/143913 "2008-07-23T20:00:32Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![rmac217](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/bc8723/32.png) [@rmac217](https://www.ruby-forum.com/u/rmac217)\
**Post date:** [July 23, 2008, 8:00pm UTC](https://www.ruby-forum.com/t/is-cgi-parse-terribly-broken/143913/1 "2008-07-23T20:00:32Z")

</div>

Is CGI:🍪:parse meant to be used on the contents of the Set-Cookie  
header or the Cookie header, or both?

Here is what happens when I use it on the Set-Cookie header:

require ‘cgi’

# File lib/cgi.rb, line 875

# def Cookie::parse(raw\_cookie)

# cookies = Hash.new([])

# return cookies unless raw\_cookie

# raw\_cookie.split(/[;,]\s?/).each do |pairs|

# name, values = pairs.split(‘=’,2)

# next unless name and values

# name = CGI::unescape(name)

# values ||= “”

# values = values.split(‘&’).collect{|v| CGI::unescape(v) }

# if cookies.has\_key?(name)

# values = cookies[name].value + values

# end

# cookies[name] = Cookie::new(name, \*values)

# end

# cookies

# end

asetcookie = “phpbb3\_q3k1i\_u=1; expires=Thu, 23-Jul-2009 17:27:04 GMT;  
path=/; [domain=.brawlsnapshots.com](http://domain=.brawlsnapshots.com); HttpOnly, phpbb3\_q3k1i\_k=;  
expires=Thu, 23-Jul-2009 17:27:04 GMT; path=/;  
[domain=.brawlsnapshots.com](http://domain=.brawlsnapshots.com); HttpOnly,  
phpbb3\_q3k1i\_sid=3c2ab8dae46098004b66dcd2ff6c3180; expires=Thu,  
23-Jul-2009 17:27:04 GMT; path=/; [domain=.brawlsnapshots.com](http://domain=.brawlsnapshots.com); HttpOnly,  
phpbb3\_q3k1i\_u=1000; expires=Thu, 23-Jul-2009 17:27:04 GMT; path=/;  
[domain=.brawlsnapshots.com](http://domain=.brawlsnapshots.com); HttpOnly, phpbb3\_q3k1i\_k=c06c23e2a199173a;  
expires=Thu, 23-Jul-2009 17:27:04 GMT; path=/;  
[domain=.brawlsnapshots.com](http://domain=.brawlsnapshots.com); HttpOnly,  
phpbb3\_q3k1i\_sid=85d32e487ffd5bc8fad948e327866597; expires=Thu,  
23-Jul-2009 17:27:04 GMT; path=/; [domain=.brawlsnapshots.com](http://domain=.brawlsnapshots.com); HttpOnly”

puts “The Cookies:”  
puts asetcookie

puts “Ruby says:”  
puts CGI:🍪:parse(asetcookie).inspect

OUTPUT:

ryan@rtmlap:~/rb/code/test$ ruby ~/test.rb  
The Cookies:  
phpbb3\_q3k1i\_u=1; expires=Thu, 23-Jul-2009 17:27:04 GMT; path=/;  
[domain=.brawlsnapshots.com](http://domain=.brawlsnapshots.com); HttpOnly, phpbb3\_q3k1i\_k=; expires=Thu,  
23-Jul-2009 17:27:04 GMT; path=/; [domain=.brawlsnapshots.com](http://domain=.brawlsnapshots.com); HttpOnly,  
phpbb3\_q3k1i\_sid=3c2ab8dae46098004b66dcd2ff6c3180; expires=Thu,  
23-Jul-2009 17:27:04 GMT; path=/; [domain=.brawlsnapshots.com](http://domain=.brawlsnapshots.com); HttpOnly,  
phpbb3\_q3k1i\_u=1000; expires=Thu, 23-Jul-2009 17:27:04 GMT; path=/;  
[domain=.brawlsnapshots.com](http://domain=.brawlsnapshots.com); HttpOnly, phpbb3\_q3k1i\_k=c06c23e2a199173a;  
expires=Thu, 23-Jul-2009 17:27:04 GMT; path=/;  
[domain=.brawlsnapshots.com](http://domain=.brawlsnapshots.com); HttpOnly,  
phpbb3\_q3k1i\_sid=85d32e487ffd5bc8fad948e327866597; expires=Thu,  
23-Jul-2009 17:27:04 GMT; path=/; [domain=.brawlsnapshots.com](http://domain=.brawlsnapshots.com); HttpOnly  
Ruby says:  
{“phpbb3\_q3k1i\_sid”=\>[“3c2ab8dae46098004b66dcd2ff6c3180”,  
“85d32e487ffd5bc8fad948e327866597”], “expires”=\>[“Thu”, “Thu”, “Thu”,  
“Thu”, “Thu”, “Thu”], “domain”=\>[“.brawlsnapshots.com”,  
“.brawlsnapshots.com”, “.brawlsnapshots.com”, “.brawlsnapshots.com”,  
“.brawlsnapshots.com”, “.brawlsnapshots.com”], “phpbb3\_q3k1i\_u”

VERSION:  
ruby 1.8.6 (2007-09-24 patchlevel 111) [i486-linux]
