Ruby: Überprüfung, ob URI HTTPS?
Ich würde gerne prüfen, ob die URI müssen die SSL-Authentifizierung:
url = URI.parse("http://www.google.com")
# [some code]
if url.instance_of? URI::HTTPS
http.use_ssl=true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
end
Jedoch, diese wenigen Zeilen werfen die folgende Fehlermeldung..
/usr/lib/ruby/1.8/uri/common.rb:436:in `split': bad URI(is not URI?): HTTPS (URI::InvalidURIError)
from /usr/lib/ruby/1.8/uri/common.rb:485:in `parse'
from /usr/lib/ruby/1.8/uri/common.rb:608:in `URI'
from links.rb:18
Warum ist es passiert?
- Durch die Art und Weise, mislav.net/2013/07/ruby-openssl erklärt, warum
OpenSSL::SSL::VERIFY_NONE
ist nicht die beste Wahl
Du musst angemeldet sein, um einen Kommentar abzugeben.
Damit Sie überprüfen könnten, uri-Schema gegen eine einfache "https" string.
wie in der vorherigen Antwort,
HTTP
undHTTPS
sind verschiedene Klassen.insbesondere
HTTPS
ist eine Unterklasse derHTTP
Klasse. damit Sie überprüfen könnten, mitinstance_of?
.aber wenn diese Hierarchie überhaupt verändert wird, dann könnte der code brechen, damit die obige Antwort könnte sein, mehr zukunftssicher.
scheme
Methode, IMHO. Standard-Bibliothek ist immer noch Recht stabil.instance_of?(URI::HTTPS)
kann eine bessere Wahl sein, da wenn ich ein falsch eingegebenes string (sagenhttp.use_ssl = (uri.scheme == 'htps')
), bekomme ich keine Fehler, in der Erwägung, dassinstance_of?(URI::HTPS)
gibtuninitialized constant