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
Freigeben: 2024-12-20 07:27:09
Original
320 Leute haben es durchsucht

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
Nach dem Login kopieren

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")
Nach dem Login kopieren

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
Nach dem Login kopieren

Beispiel mit Netcat:

Um das Verhalten zu testen, erstellen Sie eine HTTP-Anforderungsdatei mit den folgenden Inhalt:

GET / HTTP/1.1
Host: localhost:8080
Nach dem Login kopieren

Und führen Sie den folgenden Befehl aus:

cat my-http-request-file | nc localhost 8080
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage