Maison > développement back-end > Golang > Pourquoi r.URL.Host et r.URL.Scheme sont-ils vides dans My Go Development Server ?

Pourquoi r.URL.Host et r.URL.Scheme sont-ils vides dans My Go Development Server ?

Mary-Kate Olsen
Libérer: 2024-12-15 18:56:10
original
884 Les gens l'ont consulté

Why are r.URL.Host and r.URL.Scheme Empty in 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
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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()
Copier après la connexion

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