Heim >Backend-Entwicklung >Golang >Warum sind Host- und Scheme-Attribute in der Anforderungs-URL meines Go Development Servers leer?

Warum sind Host- und Scheme-Attribute in der Anforderungs-URL meines Go Development Servers leer?

DDD
DDDOriginal
2024-12-13 15:48:25225Durchsuche

Why Are Host and Scheme Attributes Blank in My Go Development Server's Request URL?

Leerer Host und Schema auf dem Entwicklungsserver

In den Anfangsphasen der Entwicklung einer Go-Anwendung empfiehlt es sich, den „Hallo Welt“-Code zu verwenden, um sich mit dem Framework vertraut zu machen gemeinsam. Wenn Sie jedoch versuchen, über die Anforderungs-URL auf die Host- und Scheme-Attribute zuzugreifen, stoßen Sie möglicherweise auf unerwartete leere Werte. Warum passiert das?

Die HTTP-Bibliothek von Go analysiert die Roh-URL aus der Anfrage. Wenn Sie über einen relativen Pfad auf den Server zugreifen, wie zum Beispiel:

GET / HTTP/1.1
Host: localhost:8080

Die Felder „Host“ und „Schema“ im URL-Objekt bleiben leer.

Im Gegensatz dazu, wenn Sie über einen Proxy auf den Server zugreifen , wird eine absolute URL wie diese verwendet:

GET http://localhost:8080/ HTTP/1.1
Host: localhost:8080

Dies führt zur korrekten Auffüllung dieser Felder.

Um den HTTP-Host zu erhalten, berücksichtigen Sie Verwenden Sie direkt das Host-Attribut der http.Request-Struktur.

Darüber hinaus können Sie den Typ der URL (relativ oder absolut) bestimmen, indem Sie die IsAbs()-Methode überprüfen:

isAbsoluteURL := r.URL.IsAbs()

Dies Die Überprüfung kann dabei helfen, zwischen den beiden Szenarien zu unterscheiden und Ihre Codelogik entsprechend zu steuern.

Das obige ist der detaillierte Inhalt vonWarum sind Host- und Scheme-Attribute in der Anforderungs-URL meines Go Development Servers 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