Maison > développement back-end > Golang > Pourquoi request.URL.Host et request.URL.Scheme sont-ils vides dans le serveur de développement HTTP My Go ?

Pourquoi request.URL.Host et request.URL.Scheme sont-ils vides dans le serveur de développement HTTP My Go ?

Mary-Kate Olsen
Libérer: 2024-12-17 12:38:25
original
977 Les gens l'ont consulté

Why Are request.URL.Host and request.URL.Scheme Blank in My Go HTTP Development Server?

Analyse de l'absence d'hôte et de schéma dans les requêtes du serveur de développement

Lors de l'implémentation d'un simple serveur HTTP dans Go à l'aide du package http, vous pouvez rencontrer des valeurs vides pour la requête. URL.Host et request.URL.Scheme pendant le développement. Cela peut paraître déroutant puisque vous vous attendez à ce que ces champs fournissent des informations sur la demande. Examinons pourquoi ce comportement se produit et explorons les moyens d'obtenir les données manquantes.

Dans votre exemple de code, le message de requête est reçu via un chemin relatif. Cela signifie que la requête HTTP du client n'inclut pas d'URL absolue avec un hôte et un schéma clairement spécifiés. Au lieu de cela, le client utilise un chemin relatif, laissant ces champs vides.

Cependant, si la demande a été effectuée via un proxy HTTP ou en utilisant une URL absolue, request.URL.Host et request.URL.Scheme seraient être renseigné, car le proxy ou le client fournirait ces informations explicitement.

Pour confirmer cela, vous pouvez tester votre serveur avec différents formats de requête à l'aide d'un outil comme netcat. L'envoi d'une requête avec un chemin relatif produira des champs Hôte et Schéma vides, tandis que l'utilisation d'une URL absolue les remplira.

Au lieu de vous fier uniquement à request.URL.Host, vous pouvez accéder directement au champ Hôte. à partir de la structure http.Request, qui fournira des informations sur l'hôte, que la requête utilise un chemin relatif ou absolu.

De plus, vous pouvez vérifier si la requête reçue par votre gestionnaire est absolue ou relatif en utilisant la méthode IsAbs() de la structure request.URL. Cela vous permet de gérer les requêtes avec des chemins relatifs de manière appropriée.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal