2012-04-04 8 views
11

私はHpricotとOpenURIを使用してWebページを解析し、そこから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

宝石 'open_uri_redirections'が私のために働いた。グラシア・ハイメ! –

答えて

13

この問題が発生する理由については、this Ruby bug reportを参照してください。 「安全でない」リダイレクトを許可するためにOpenURIへのサルパッチについては、this gistを参照してください。

+0

バグがペーパークリップの宝石に入っています。そこに任意のバージョンで修正されている場合、任意のアイデア? –

+0

"1年以上前にYusuke Endohによって更新されました - トラッカーがBugからFeatureに変更されました" – ZirconCode

+0

これは古い回答ですが、それは価値があります:HTTPを介したすべてのリクエストには可能性はないが技術的に可能な機内で変更される可能性があります。安全でないリダイレクトを許可するコードにパッチを当てると、信頼できないネットワークで常にhttps://を使用し、http://を疑念とプライバシーの低下の影響を考慮して正しいコースにするときに、セキュリティの問題が発生します。 – Barry

関連する問題