Ruby Issue Tracking System: Issueshttps://bugs.ruby-lang.org/https://bugs.ruby-lang.org/favicon.ico?17113305112011-07-02T18:42:25ZRuby Issue Tracking System
Redmine Ruby master - Bug #4964 (Closed): open-uri failed to handle multiple "Set-Cookie" headershttps://bugs.ruby-lang.org/issues/49642011-07-02T18:42:25Ztdsparrow (ren li)sqallowlee@gmail.com
<p>=begin<br>
== Problem<br>
open-uri handle multiple "Set-Cookie" headers in a wrong way. Given a header from http server like:</p>
<pre><code> Set-Cookie: name1=value1; blabla
Set-Cookie: name2=value2; blabla
</code></pre>
<p>open-uri will pack it into meta info of result like:</p>
<pre><code> Set-Cookie: name1=value; blabla, name2=value2; blabla
</code></pre>
<p>The problem is that line 332 of open-uri.rb<br>
resp.each {|name,value| buf.io.meta_add_field name, value }</p>
<p>In turn will call invoke code in net/http.rb to join headers with ",".</p>
<p>== ruby -v:<br>
ruby 1.9.2p174 (2011-01-28 revision 30696) [i686-linux]</p>
<p>== code:<br>
require 'open-uri'<br>
begin<br>
open "<a href="http://douban.fm" class="external">http://douban.fm</a>", :redirect => false<br>
rescue OpenURI::HTTPRedirect => redirect<br>
redirect.io.meta['set-cookie']<br>
end</p>
<p>=end</p>