Heim >Backend-Entwicklung >Golang >Warum sind Host und Schema in den HTTP-Anfragen des Go-Entwicklungsservers leer?

Warum sind Host und Schema in den HTTP-Anfragen des Go-Entwicklungsservers leer?

Linda Hamilton
Linda HamiltonOriginal
2024-12-20 07:27:09300Durchsuche

Why Are Host and Scheme Blank in Go's Development Server HTTP Requests?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn