lib/rack/utils.rb in rack-2.2.2 vs lib/rack/utils.rb in rack-2.2.3
- old
+ new
@@ -210,11 +210,15 @@
def parse_cookies_header(header)
# According to RFC 6265:
# The syntax for cookie headers only supports semicolons
# User Agent -> Server ==
# Cookie: SID=31d4d96e407aad42; lang=en-US
- cookies = parse_query(header, ';') { |s| unescape(s) rescue s }
- cookies.each_with_object({}) { |(k, v), hash| hash[k] = Array === v ? v.first : v }
+ return {} unless header
+ header.split(/[;] */n).each_with_object({}) do |cookie, cookies|
+ next if cookie.empty?
+ key, value = cookie.split('=', 2)
+ cookies[key] = (unescape(value) rescue value) unless cookies.key?(key)
+ end
end
def add_cookie_to_header(header, key, value)
case value
when Hash