2012-04-04 75 views
11

我正在使用Hpricot和OpenURI解析网页并从中提取网址。open-uri不会将http重定向到https

当我得到像“http:rapidshare.com”这样的链接时,它不会重定向到https。 这是我得到的错误:

/home/leonidus/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/open-uri.rb:216:in 
`open_loop': redirection forbidden: http:.................=>  
https:......................... 
. 
. 

我试图用异常处理程序OPENURI::HTTPREDIRECT,但话又说回来,我得到同样的错误。我尝试了所有的博客,但在那里也没有解决。

+3

https://github.com/jaimeiniesta/open_uri_redirections。补丁打包成宝石。 – 2013-07-24 09:10:02

+0

宝石'open_uri_redirections'为我工作。格拉西亚斯海梅! – 2014-04-16 10:02:14

回答

13

请参阅this Ruby bug report以了解您遇到此问题的原因。请参阅this gist获取OpenURI的猴子补丁以允许“不安全”的重定向。

+0

该回形针宝石中的错误。任何想法,如果它固定在那里的任何版本? “ – 2014-03-28 17:20:08

+0

”由Yusuke Endoh于1年前更新 - 追踪者从Bug更改为功能“ – ZirconCode 2014-04-01 19:14:44

+0

这是一个古老的答案,但值得一提的是:它不安全的原因是任何和所有通过HTTP的请求都有不太可能的锡纸,但在技术上仍然可行在机上修改的机会。修补代码以允许不安全的重定向引发了一个安全问题,正确的做法是在任何不可信任的网络中使用https://,并且以怀疑和隐私减少的影响来查看http://。 – Barry 2014-11-01 19:06:26