2012-04-04 1 views
11

Я использую Hpricot и OpenURI для анализа веб-страниц и извлечения URL-адресов из них.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. патч, упакованный как драгоценный камень. –

+0

gem 'open_uri_redirections' работал для меня. Грасиас Хайме! –

ответ

13

См. this Ruby bug report для обсуждения того, почему вы столкнулись с этой проблемой. См. this gist для патча обезьяны в OpenURI, чтобы разрешить «небезопасные» перенаправления.

+0

Ошибка в камне скрепки. Любая идея, если она была исправлена ​​в любой версии там? –

+0

«Обновлено Yusuke Endoh более 1 года назад - Tracker изменен с Bug на Feature» – ZirconCode

+0

Это старый ответ, но стоит сказать: причина, по которой это небезопасно, заключается в том, что любые запросы по HTTP имеют маловероятную информацию, но по-прежнему технически возможно вероятность изменения в полете. Код исправления, позволяющий небезопасные переадресации, вводит проблему безопасности, когда правильным курсом является использование https: // всегда в любой ненадежной сети и посмотрите на http: // с подозрением и снижением конфиденциальности. – Barry