Maison >développement back-end >Golang >Pourquoi l'hôte et le schéma sont-ils vides dans les requêtes HTTP du serveur de développement Go ?

Pourquoi l'hôte et le schéma sont-ils vides dans les requêtes HTTP du serveur de développement Go ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-20 07:27:09301parcourir

Why Are Host and Scheme Blank in Go's Development Server HTTP Requests?

Hôte et schéma vides dans le serveur de développement pour Go

Dans Go, lors de l'utilisation du serveur de développement pour gérer les requêtes HTTP, il est courant de rencontrer un problème où les propriétés Host et Scheme de http.Request.URL sont vide.

Raison :

Lors de l'accès direct au serveur de développement (sans proxy HTTP), les requêtes sont souvent effectuées dans un format relatif :

GET /
Host: localhost:8080

Dans de tels cas, l'analyseur de requête HTTP Go interprète l'URL comme relative, ce qui entraîne un hôte et un schéma vides. propriétés.

Accès à l'hôte HTTP :

Pour récupérer l'hôte HTTP de la requête, accédez à l'attribut Host de la structure http.Request, comme indiqué dans le code suivant :

host := r.Host // Returns the host (e.g., "localhost:8080")

Détermination du type d'URL :

Pour déterminer si une URL est absolue ou relatif, utilisez la méthode IsAbs() de la structure URL :

isAbsoluteURL := r.URL.IsAbs() // Returns true if the URL is absolute, false otherwise

Exemple avec Netcat :

Pour tester le comportement, créez un fichier de requête HTTP avec le contenu suivant :

GET / HTTP/1.1
Host: localhost:8080

Et exécutez la commande suivante :

cat my-http-request-file | nc localhost 8080

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!

Déclaration:
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