Bestimmen des URL-Hosts und -Schemas im Entwicklungsserver: Warum sind sie leer?
Beim Zugriff auf einen HTTP-Server über einen relativen Pfad, so wie er ist In Entwicklungsumgebungen ist es üblich, dass bestimmte URL-Attribute leer angezeigt werden. Insbesondere können request.URL.Host und request.URL.Scheme leere Werte zurückgeben.
Warum passiert das?
Relative HTTP-Anfragen, die normalerweise von Browsern ausgegeben werden, wenn Beim lokalen Zugriff auf den Server fehlen explizite Host- und Schemainformationen. Dies steht im Gegensatz zu absoluten URLs, die von HTTP-Proxys verwendet werden und diese Details in der Anfrage enthalten. Bei relativen Anfragen ist nur die Roh-URL im http.Request.URL-Objekt verfügbar.
Zugriff auf den HTTP-Host
Um den HTTP-Host abzurufen, Sie können auf das Host-Attribut der http.Request-Struktur zugreifen. Dadurch werden der Hostname und der Port bereitgestellt, die im Host-Header der Anfrage angegeben sind.
Unterscheidung relativer und absoluter URLs
Sie können durch Aufrufen bestimmen, ob eine Anfrage eine relative oder absolute URL verwendet die IsAbs()-Methode auf http.Request.URL. Wenn IsAbs() false zurückgibt, ist die URL relativ und enthält keine Host- oder Schemainformationen.
Beispiel für die Verwendung von Netcat
Um den Unterschied zu veranschaulichen, können Sie Netcat verwenden um eine HTTP-Anfrage mit einem relativen Pfad zu senden.
cat my-http-request-file | nc localhost 8080
Die my-http-request-datei sollte den folgenden Inhalt enthalten, formatiert als HTTP Anfrage:
GET / HTTP/1.1 Host: localhost:8080
Diese Anfrage gibt leere r.URL.Host- und r.URL.Scheme-Werte im Handler zurück.
Das obige ist der detaillierte Inhalt vonWarum sind request.URL.Host und request.URL.Scheme in relativen HTTP-Anfragen leer?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!