class URI::HTTP
Die Syntax von HTTP-URIs ist in RFC1738 Abschnitt 3.3 definiert.
Beachten Sie, dass die Ruby URI-Bibliothek HTTP-URLs zulässt, die Benutzernamen und Passwörter enthalten. Dies ist gemäß RFC nicht legal, wurde aber in Internet Explorer 5 und 6 vor dem Sicherheitsupdate MS04-004 unterstützt. Siehe <URL:support.microsoft.com/kb/834489>.
Constants
Öffentliche Klassenmethoden
Source
# File lib/uri/http.rb, line 59 def self.build(args) tmp = Util.make_components_hash(self, args) super(tmp) end
Beschreibung
Erstellt ein neues URI::HTTP-Objekt aus Komponenten mit Syntaxprüfung.
Die akzeptierten Komponenten sind userinfo, host, port, path, query und fragment.
Die Komponenten sollten entweder als Array oder als Hash mit Schlüsseln bereitgestellt werden, die durch Voranstellen eines Doppelpunkts vor die Komponentennamen gebildet werden.
Wenn ein Array verwendet wird, müssen die Komponenten in der Reihenfolge [userinfo, host, port, path, query, fragment] übergeben werden.
Beispiel
uri = URI::HTTP.build(host: 'www.example.com', path: '/foo/bar') uri = URI::HTTP.build([nil, "www.example.com", nil, "/path", "query", 'fragment'])
Derzeit generiert diese Methode, wenn userinfo-Komponenten übergeben werden, ungültige HTTP-URIs gemäß RFC 1738.
URI::Generic::build auf.Öffentliche Instanzmethoden
Source
# File lib/uri/http.rb, line 65 def check_host(v) ret = super if ret && v.empty? raise InvalidComponentError, "bad component(expected host component): #{v}" end ret end
Leere Hostnamen sind nicht erlaubt, da sie gemäß RFC 3986 nicht zulässig sind.
URI::Generic#check_host aufSource
# File lib/uri/http.rb, line 131 def origin "#{scheme}://#{authority}" end
Beschreibung
Gibt den Ursprung für eine HTTP-URI zurück, wie in www.rfc-editor.org/rfc/rfc6454 definiert.
Beispiel
URI::HTTP.build(host: 'www.example.com', path: '/foo/bar').origin #=> "http://www.example.com" URI::HTTP.build(host: 'www.example.com', port: 8000, path: '/foo/bar').origin #=> "http://www.example.com:8000" URI::HTTP.build(host: 'www.example.com', port: 80, path: '/foo/bar').origin #=> "http://www.example.com" URI::HTTPS.build(host: 'www.example.com', path: '/foo/bar').origin #=> "https://www.example.com"
Source
# File lib/uri/http.rb, line 89 def request_uri return unless @path url = @query ? "#@path?#@query" : @path.dup url.start_with?(?/.freeze) ? url : ?/ + url end
Beschreibung
Gibt den vollständigen Pfad für eine HTTP-Anfrage zurück, wie von Net::HTTP::Get gefordert.
Wenn die URI eine Query enthält, ist der vollständige Pfad URI#path + ‘?’ + URI#query. Andernfalls ist der Pfad einfach URI#path.
Beispiel
uri = URI::HTTP.build(path: '/foo/bar', query: 'test=true') uri.request_uri # => "/foo/bar?test=true"