Ce phénomène est dû au fait que le navigateur web transforme la requête POST en requête GET.
Selon la RFC 2616, le navigateur n'est pas censé changer la méthode de requête lorsqu'il reçoit une 301, mais avertir l'utilisateur et lui demander confirmation pour qu'il soumette à nouveau la requête à la nouvelle URL. Malheureusement, je n'ai jamais vu un navigateur web faire cela. Mais la raison d'être de l'une ou l'autre de ces mesures est de protéger l'utilisateur contre divers scénarios de détournement.
Voir section 10.3.2 :
Si le code d'état 301 est reçu en réponse à une demande autre que GET ou HEAD, l'agent utilisateur NE DOIT PAS rediriger automatiquement la demande à moins que l'utilisateur ne puisse le confirmer, car cela pourrait modifier les conditions dans lesquelles la demande a été émise.
Note : Lors de la redirection automatique d'une requête POST après réception d'un code d'état 301, certains agents utilisateurs HTTP/1.0 existants la transformeront par erreur en requête GET.
La solution la plus simple et la plus rapide consiste à corriger votre application web de manière à ce qu'elle ne serve plus les URL qui doivent être redirigées. Cela améliorera également les performances globales de votre site et son classement en matière de référencement. Par exemple, si vous redirigez example.com
a www.example.com
puis alle des URL servis par votre application web doivent commencer par www.example.com
.