Maison > Article > développement back-end > Pourquoi My Go Web Server redirige-t-il les requêtes POST vers `/myurl` vers `/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 :
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!