Maison  >  Article  >  développement back-end  >  Pourquoi My Go Web Server redirige-t-il les requêtes POST vers `/myurl` vers `/myurl/` ?

Pourquoi My Go Web Server redirige-t-il les requêtes POST vers `/myurl` vers `/myurl/` ?

DDD
DDDoriginal
2024-11-22 22:38:24711parcourir

Why Does My Go Web Server Redirect POST Requests to `/myurl` to `/myurl/`?

Go Web Server : redirection mystérieuse sur les requêtes POST

Lorsque vous effectuez des requêtes POST vers une URL spécifique (/myurl), les développeurs rencontrent un problème inattendu comportement : la requête n’arrive pas directement au serveur. Au lieu de cela, une réponse de redirection 301 est reçue, suivie d'une requête GET secondaire gérée par le serveur.

Après avoir étudié le code du serveur, il semble qu'un gestionnaire pour le chemin "/myurl/" soit enregistré via http.HandleFunc("/myurl/", PHandler). Cependant, lorsque le navigateur effectue la requête POST, il dirige vers "/myurl" (sans la barre oblique finale).

La clé pour comprendre ce problème réside dans le comportement par défaut du package http dans Go. Selon la documentation du type http.ServeMux, une barre oblique finale sur le chemin enregistré déclenche une redirection si la requête arrive sans la barre oblique finale. Ceci a pour but de garantir que les requêtes sont acheminées vers le gestionnaire approprié.

Dans ce cas, puisque le gestionnaire est enregistré pour "/myurl/", la requête du navigateur à "/myurl" sans la barre oblique finale entraîne une redirection vers "/myurl/" avec la barre oblique finale. Ceci explique l'observation selon laquelle la requête n'atteint jamais directement le serveur.

Pour résoudre ce problème, les développeurs disposent de plusieurs options :

  1. Dirigez le navigateur vers le bon chemin avec la barre oblique finale " /myurl/".
  2. Enregistrez le gestionnaire uniquement pour le chemin spécifique sans la barre oblique finale, tel que http.HandleFunc("/myurl", PHandler).
  3. Enregistrez les gestionnaires pour les deux chemins, autorisant les requêtes avec et sans la barre oblique finale.

En implémentant l'une de ces solutions, les développeurs peuvent éliminer le comportement de redirection inattendu et garantir que les requêtes POST sont traitées comme prévu par leur serveur Web Go.

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