Heim >Backend-Entwicklung >Golang >Warum sind r.URL.Host und r.URL.Scheme in My Go Development Server leer?

Warum sind r.URL.Host und r.URL.Scheme in My Go Development Server leer?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-15 18:56:10884Durchsuche

Why are r.URL.Host and r.URL.Scheme Empty in My Go Development Server?

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!

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