Heim > Backend-Entwicklung > Golang > Wie bestimmen Sie das Anforderungs-URL-Schema in Go?

Wie bestimmen Sie das Anforderungs-URL-Schema in Go?

DDD
Freigeben: 2024-11-03 06:10:03
Original
931 Leute haben es durchsucht

How Do You Determine the Request URL Scheme in Go?

Bestimmen des Anforderungs-URL-Schemas in Go

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.

Enthüllung des Schemas

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.

TLS zur Rettung

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:

  • Wenn r.TLS nicht null ist, wurde die Anfrage über HTTPS gestellt.
  • Wenn r.TLS null ist, Die Anfrage wurde über HTTP gestellt.

Implementierung

<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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage