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!