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 :
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>
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!