Heim >Backend-Entwicklung >Golang >Warum sind Host und Schema in den HTTP-Anfragen des Go-Entwicklungsservers leer?
Leerer Host und Schema im Entwicklungsserver für Go
In Go kommt es häufig vor, dass bei der Verwendung des Entwicklungsservers zur Verarbeitung von HTTP-Anfragen ein Fehler auftritt Ein Problem mit den Host- und Scheme-Eigenschaften von http.Request.URL leer.
Grund:
Beim direkten Zugriff auf den Entwicklungsserver (ohne HTTP-Proxy) werden Anfragen oft in einem relativen Format gestellt:
GET / Host: localhost:8080
In solchen Fällen interpretiert der Go-HTTP-Anfrageparser die URL als relativ, was zu einem leeren Host und Schema führt Eigenschaften.
Zugriff auf den HTTP-Host:
Um den HTTP-Host aus der Anfrage abzurufen, greifen Sie auf das Host-Attribut der http.Request-Struktur zu, wie im folgenden Code dargestellt :
host := r.Host // Returns the host (e.g., "localhost:8080")
Bestimmen des URL-Typs:
Um festzustellen, ob eine URL absolut ist oder relativ, verwenden Sie die IsAbs()-Methode der URL-Struktur:
isAbsoluteURL := r.URL.IsAbs() // Returns true if the URL is absolute, false otherwise
Beispiel mit Netcat:
Um das Verhalten zu testen, erstellen Sie eine HTTP-Anforderungsdatei mit den folgenden Inhalt:
GET / HTTP/1.1 Host: localhost:8080
Und führen Sie den folgenden Befehl aus:
cat my-http-request-file | nc localhost 8080
Das obige ist der detaillierte Inhalt vonWarum sind Host und Schema in den HTTP-Anfragen des Go-Entwicklungsservers leer?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!