March 2, 2017
In Ruby 2.3, if the argument to open-uri
is http and the host redirects to
https , then open-uri
would throw an error.
> require 'open-uri'
> open('http://www.google.com/gmail')
RuntimeError: redirection forbidden: http://www.google.com/gmail -> https://www.google.com/gmail/
To get around this issue, we could use open_uri_redirections gem.
> require 'open-uri'
> require 'open_uri_redirections'
> open('http://www.google.com/gmail/', :allow_redirections => :safe)
=> #<Tempfile:/var/folders/jv/fxkfk9_10nb_964rvrszs2540000gn/T/open-uri20170228-41042-2fffoa>
In Ruby 2.4, this issue is fixed. So now http to https redirection is possible using open-uri.
> require 'open-uri'
> open('http://www.google.com/gmail')
=> #<Tempfile:/var/folders/jv/fxkfk9_10nb_964rvrszs2540000gn/T/open-uri20170228-41077-1bkm1dv>
Note that redirection from https to http will raise an error, like it did in previous versions, since that has possible security concerns.
If this blog was helpful, check out our full blog archive.