Maison >développement back-end >Golang >Pourquoi r.URL.Host et r.URL.Scheme sont-ils vides dans My Go Development Server ?
Accès relatif aux URL dans le serveur de développement
Question :
Lors de l'exécution d'un serveur HTTP Go en développement, pourquoi r.URL.Host et r.URL.Scheme sont-ils vides pour les messages entrants demandes ?
Réponse :
L'absence d'informations sur l'hôte et le schéma dans r.URL est causée par l'utilisation d'URL relatives lors de l'accès au serveur pendant le développement. Une URL relative ne spécifie pas l'hôte ou le schéma, contrairement à une URL absolue.
Requêtes relatives :
Normalement, un navigateur Web émet une requête absolue, telle que :
GET http://localhost:8080/ HTTP/1.1 Host: localhost:8080
Cependant, lors de l'accès direct à un serveur de développement local, les navigateurs peuvent utiliser un nom relatif request :
GET / HTTP/1.1 Host: localhost:8080
Dans cette requête relative, seul le chemin est spécifié, et l'hôte et le schéma sont omis. Par conséquent, r.URL.Host et r.URL.Scheme seront vides lorsque le serveur recevra une telle demande.
Accès aux informations sur l'hôte :
Pour récupérer les informations sur l'hôte dans cette situation, vous pouvez utiliser l'attribut r.Host de http.Request struct.
host := r.Host
Requêtes absolues (facultatif) :
Pour vous assurer de toujours recevoir des requêtes absolues, vous pouvez utiliser un proxy HTTP. Lors de l'utilisation d'un proxy, le proxy transmettra les requêtes absolues au serveur, et r.URL.Host et r.URL.Scheme contiendront les valeurs attendues.
IsAbs() Check :
Vous pouvez également vérifier si l'URL dans la requête est absolue ou relative en utilisant la méthode IsAbs() de la structure r.URL :
isAbsoluteURL := r.URL.IsAbs()
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!