Maison > développement back-end > Golang > le corps du texte

Comment déterminer le schéma de l'URL de la requête actuelle dans Go ?

DDD
Libérer: 2024-11-03 17:35:03
original
796 Les gens l'ont consulté

How to Determine the Scheme of the Current Request URL in Go?

Déterminer le schéma de l'URL de la requête actuelle dans Go

Dans Ruby/Rack, le schéma de l'URL de la requête actuelle peut être récupéré à l'aide de schéma#request. Cependant, dans Go, http.Request.URL.Scheme renvoie une chaîne vide. Pour obtenir le schéma correctement, vous devez considérer l'approche suivante :

Le service des protocoles HTTP et HTTPS nécessite l'utilisation simultanée de http.ListenAndServe() et http.ListenAndServeTLS() avec le même gestionnaire. En utilisant uniquement http.ListenAndServe(), vous écoutez exclusivement le protocole HTTP.

HTTPS, étant HTTP sur TLS, fournit une propriété TLS dans l'objet http.Request. Cette propriété renvoie un objet *tls.ConnectionState, qui contient des informations sur le TLS utilisé pour la requête.

Pour déterminer le schéma utilisé par le client, inspectez la propriété TLS de la requête :

  • Si r.TLS n'est pas nul, le schéma était HTTPS.
  • Si r.TLS est nul, le schéma était HTTP.

Voici un exemple de code mis à jour qui démontre cette approche :

<code class="go">package main

import (
    "fmt"
    "log"
    "net/http"
    "net/http/httputil"
)

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>
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal