Heim >Backend-Entwicklung >Golang >Warum sind Host- und Scheme-Attribute in der Anforderungs-URL meines Go Development Servers leer?
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!