Heim >Backend-Entwicklung >Golang >Warum sind r.URL.Host und r.URL.Scheme in My Go Development Server leer?
Relativer URL-Zugriff im Entwicklungsserver
Frage:
Beim Ausführen eines Go-HTTP-Servers Warum sind in der Entwicklung r.URL.Host und r.URL.Scheme für eingehende Daten leer? Anfragen?
Antwort:
Das Fehlen von Host- und Schemainformationen in r.URL wird durch die Verwendung relativer URLs beim Zugriff auf den Server während der Entwicklung verursacht. Eine relative URL gibt im Gegensatz zu einer absoluten URL weder den Host noch das Schema an.
Relative Anfragen:
Normalerweise gibt ein Webbrowser eine absolute Anfrage aus, wie zum Beispiel:
GET http://localhost:8080/ HTTP/1.1 Host: localhost:8080
Wenn Browser jedoch direkt auf einen lokalen Entwicklungsserver zugreifen, verwenden sie möglicherweise einen Verwandten Anfrage:
GET / HTTP/1.1 Host: localhost:8080
In dieser relativen Anfrage wird nur der Pfad angegeben und der Host und das Schema weggelassen. Infolgedessen sind r.URL.Host und r.URL.Scheme leer, wenn der Server eine solche Anfrage erhält.
Zugriff auf Hostinformationen:
Zum Abrufen Für die Hostinformationen können Sie in dieser Situation das r.Host-Attribut der http.Request verwenden struct.
host := r.Host
Absolute Requests (Optional):
Um sicherzustellen, dass Sie immer absolute Requests erhalten, können Sie einen HTTP-Proxy verwenden. Bei Verwendung eines Proxys leitet der Proxy absolute Anfragen an den Server weiter und r.URL.Host und r.URL.Scheme enthalten die erwarteten Werte.
IsAbs() Check:
Sie können auch überprüfen, ob die URL in der Anfrage absolut oder relativ ist, indem Sie die IsAbs()-Methode der r.URL verwenden struct:
isAbsoluteURL := r.URL.IsAbs()
Das obige ist der detaillierte Inhalt vonWarum sind r.URL.Host und r.URL.Scheme in My Go Development Server leer?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!