2012-04-04 11 views
11

Ich verwende Hpricot und OpenURI, um Webseiten zu analysieren und URLs daraus zu extrahieren.open-uri leitet http nicht zu https um

Wenn ich einen Link wie "http: rapidshare.com" bekomme, wird nicht auf https umgeleitet. Dies ist der Fehler, den ich habe:

/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:......................... 
. 
. 

Ich versuchte, den Exception-Handler OPENURI::HTTPREDIRECT zu verwenden, aber dann wieder ich die gleiche Störung erhalte. Ich habe alle Blogs ausprobiert, aber es ist auch dort nicht gelöst.

+3

https://github.com/jaimeiniesta/open_uri_redirections. Patch als Edelstein verpackt. –

+0

gem 'open_uri_redirections' arbeitete für mich. Gracias Jaime! –

Antwort

13

Eine Diskussion darüber, warum dieses Problem auftritt, finden Sie unter this Ruby bug report. Siehe this gist für einen Affe-Patch zu OpenURI, um "unsichere" Weiterleitungen zuzulassen.

+0

Der Fehler ist in der Büroklammer Juwel. Irgendeine Idee, wenn es dort bei irgendeiner Version behoben wurde? –

+0

"Von Yusuke Endoh vor über einem Jahr aktualisiert - Tracker von Bug zu Feature geändert" – ZirconCode

+0

Dies ist eine alte Antwort, aber es ist erwähnenswert: Der Grund ist unsicher, dass alle Anfragen über HTTP die unwahrscheinliche Alufolie haben, aber immer noch technisch möglich Chance, während des Fluges verändert zu werden. Das Patchen von Code, um unsichere Weiterleitungen zuzulassen, führt zu einem Sicherheitsproblem, wenn der richtige Kurs die Verwendung von https: // immer über ein nicht vertrauenswürdiges Netzwerk ist und http: // mit verdächtigen und datenschutzmindernden Auswirkungen. – Barry