SSL-Anforderung mit Ruby-Standardbibliothek
Net::HTTP
in Ruby (> = 2.0.0) führt standardmäßig eine SSL-Verifizierung durch, wenn Sie ein URI-Objekt mit einer "https" -URL übergeben. Siehe https://github.com/ruby/ruby/blob/778bbac8ac2ae50f0987c4888f7158296ee5bbdd/lib/net/http.rb#L481
Sie können dies überprüfen, indem Sie eine Abrufanforderung für eine domain mit einem abgelaufenen Zertifikat ausführen.
uri = URI('https://expired.badssl.com/')
Net::HTTP.get(uri)
# OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=error: certificate verify failed
SSL anfordern Ruby HTTP gems
Wenn Sie möchten, eine Alternative verwenden, können Sie die folgenden Edelsteine verwenden, die auch SSL-Überprüfung standardmäßig ausführt:
- Excon
Excon ist eine reine Ruby-HTTP-Implementierung.
require 'excon'
Excon.get 'https://encrypted.google.com'
- Curb
Curb ist ein HTTP-Client, der Libcurl unter der Haube verwendet.
require 'curl'
Curl.get 'https://encrypted.google.com'
- http.rb
HTTP oder http.rb ist eine reine Implementierung Ruby-HTTP verwendet aber http_parser.rb HTTP-Anfragen und Antworten zu analysieren. Da http_parser.rb native Erweiterungen verwendet, beansprucht es eine der schnellsten HTTP-Client-Bibliotheken zu sein. Aber wie immer, nehmen Sie Benchmarks mit einem Körnchen Salz.
require 'http'
HTTP.get 'https://encrypted.google.com'
- HTTPClient
Httpclient ist eine weitere reine Ruby-Implementierung.
require 'httpclient'
HTTPClient.get 'https://encrypted.google.com'
Hier sind HTTP-Bibliotheken und nicht HTTP-Wrapper aufgeführt.Wrapper-Edelsteine wie HTTParty und Faraday wickeln entweder eine bestimmte HTTP-Implementierung ab oder verwenden Adapter, um eine einheitliche HTTP-Schnittstelle bereitzustellen. Sie können diese Comparison matrix of Ruby HTTP client features überprüfen. Es vergleicht die Features jeder einzelnen HTTP-Client-Bibliothek. Beachten Sie jedoch, dass die Informationen seit 2012 nicht aktualisiert werden.
Haben Sie nach http- oder https-Anfragen gefragt? Der Fragetitel stimmt nicht mit dem Text überein. –
Da es sich bei allen Antworten um HTTPS handelt, habe ich die Frage zu HTTPS geändert. – Kevin