In der Rack-Middleware für Ruby ist die Erfassung des Schemas der aktuellen Anforderungs-URL mithilfe der Methode scheme#request unkompliziert. In Go gibt das Feld http.Request.URL.Scheme jedoch eine leere Zeichenfolge zurück, was die Entwickler verwirrt.
Der Schlüssel zum Freischalten des Anforderungs-URL-Schemas in Go liegt in Dabei ist zu berücksichtigen, dass sowohl HTTP- als auch HTTPS-Anfragen bearbeitet werden müssen. Durch den Einsatz der Funktionen http.ListenAndServe() und http.ListenAndServeTLS() bedienen wir beide Protokolle.
HTTPS stellt als HTTP über TLS eine TLS-Eigenschaft bereit *http.Anfrage, die Informationen über die TLS-Verbindung offenlegt. Durch die Untersuchung dieser Eigenschaft können wir das verwendete Protokoll erkennen:
<code class="go">func handler(w http.ResponseWriter, r *http.Request) { if r.TLS == nil { // the scheme was HTTP } else { // the scheme was HTTPS } } func main() { http.HandleFunc("/", handler) go func() { log.Fatal(http.ListenAndServeTLS(":8443", "localhost.crt", "localhost.key", nil)) }() log.Fatal(http.ListenAndServe(":8080", nil)) }</code>
Dieser Ansatz stellt sicher, dass Anfragen nahtlos verarbeitet werden, unabhängig davon, ob es sich um HTTP oder HTTPS handelt, und bietet einen zuverlässigen Mechanismus zur Bestimmung der URL-Schema anfordern.
Das obige ist der detaillierte Inhalt vonWie bestimmen Sie das Anforderungs-URL-Schema in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!