Demandes POST vues comme GET par serveur

Vous avez un problème vraiment étrange ici. Lors de l’envoi de requêtes post à mon script PHP

$_SERVER['REQUEST_METHOD'] 

renvoie “GET” au lieu de “POST”.

Cela fonctionne bien pour toutes les autres méthodes REST

c’est donc ce que je reçois

 GET -> GET POST-> GET PUT -> PUT DELETE -> DELETE 

Cela ne se produit que sur un de mes serveurs, donc je suppose que c’est un problème d’Apache et j’ai réussi à comprendre que cela n’arrivera que si j’ajoute “www” à mon URL.

C’est à dire

www.something.com

cause le problème mais

quelquechose.com

ne fait pas

J’ai testé sur différents sites sur le même serveur et j’obtiens la même chose, alors je suppose qu’il s’agit d’une configuration globale.

Des pensées

Comme l’indique la spécification HTTP pour les codes de réponse 301 et 302:

Remarque: Pour des raisons historiques, un agent utilisateur PEUT modifier la méthode de demande de POST à ​​GET pour la requête suivante. Si ce comportement est indésirable, le code d’état 307 (Redirection temporaire) peut être utilisé à la place.

Une troisième possibilité (mais peu probable) est que vous obtenez une réponse 303 à l’URI initial. La solution est double:

  • Configurez les clients sous votre contrôle à POST sur l’URI canonique afin qu’ils ne soient pas redirigés du tout.
  • Configurez votre serveur pour redirect en utilisant 307 dans ce cas au lieu de 301/302.