1 votes

Pourquoi nginx change-t-il la méthode HTTP sur la règle de réécriture ?

Chaque fois que je reçois une demande sur mydomain.com Je le redirige vers la page www en utilisant la règle de réécriture suivante :

server_name mydomain.com;
rewrite ^(.*)$ $scheme://www.mydomain.com$1 permanent;

Mais si une requête POST est reçue, elle est redirigée comme GET.
Pourquoi ? Quelle est la bonne façon de rediriger cette information ?

5voto

Michael Hampton Points 232226

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 .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X