Dans le middleware Rack pour Ruby, l'acquisition du schéma de l'URL de requête actuelle est simple à l'aide de la méthode schéma#request. Cependant, dans Go, le champ http.Request.URL.Scheme renvoie une chaîne vide, laissant les développeurs perplexes.
La clé pour déverrouiller le schéma d'URL de requête dans Go réside dans reconnaissant que les requêtes HTTP et HTTPS doivent être traitées. En employant à la fois les fonctions http.ListenAndServe() et http.ListenAndServeTLS(), nous répondons aux deux protocoles.
HTTPS, étant HTTP sur TLS, fournit une propriété TLS dans *http.Request qui divulgue des informations sur la connexion TLS. En examinant cette propriété, on peut discerner le protocole utilisé :
<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>
Cette approche garantit que les demandes sont traitées de manière transparente, qu'elles soient HTTP ou HTTPS, fournissant un mécanisme fiable pour déterminer le schéma d'URL de demande.
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!