mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* lib/webrick/httpservlet/cgihandler.rb
(WEBrick::HTTPServlet::CGIHandler#do_GET): the value of Set-Cookie: header field should be splited into each cookie. [ruby-Bugs:2199] * lib/webrick/cookie.rb (WEBrick::Cookie.parse_set_cookie): new method to parse the value of Set-Cookie: header field. * test/webrick/test_cookie.rb, test/webrick/test_cgi.rb, test/webrick/webrick.cgi: add some test for cookie. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9484 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
8ffc757310
commit
aa57e68b06
6 changed files with 87 additions and 0 deletions
|
|
@ -76,5 +76,29 @@ module WEBrick
|
|||
end
|
||||
end
|
||||
|
||||
def self.parse_set_cookie(str)
|
||||
cookie_elem = str.split(/;/)
|
||||
first_elem = cookie_elem.shift
|
||||
first_elem.strip!
|
||||
key, value = first_elem.split(/=/, 2)
|
||||
cookie = new(key, HTTPUtils.dequote(value))
|
||||
cookie_elem.each{|pair|
|
||||
pair.strip!
|
||||
key, value = pair.split(/=/, 2)
|
||||
if value
|
||||
value = HTTPUtils.dequote(value.strip)
|
||||
end
|
||||
case key.downcase
|
||||
when "domain" then cookie.domain = value
|
||||
when "path" then cookie.path = value
|
||||
when "expires" then cookie.expires = value
|
||||
when "max-age" then cookie.max_age = Integer(value)
|
||||
when "comment" then cookie.comment = value
|
||||
when "version" then cookie.version = Integer(value)
|
||||
when "secure" then cookie.secure = true
|
||||
end
|
||||
}
|
||||
return cookie
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue