J'ai finalement pris le temps de relire mon tutoriel sur les formulaires HTML avec PHP. J'y ai corrigé quelques détails, notamment le type de redirection HTTP à utiliser en réponse à une requête POST : il ne faut pas utiliser un code 204 No content mais plutôt un code de redirection.
En recevant un code 204, le client (le navigateur) n'a aucune raison de suivre les indications du serveur. Il n'y a pas de contenu, voilà tout. Utiliser un code 204 peut sembler correct puisqu'il n'y a effectivement pas de contenu à l'adresse demandée, mais les navigateurs qui suivent la RFC à la lettre ne suivront aucune redirection. Or cela casse tout le site...
En revanche, en utilisant un code de redirection 3xx, le navigateur a plus de chances de suivre la redirection demandée par le serveur. Mais là encore, il ne faut pas utiliser un code 302 comme le fait une partie des développeurs : ce status a changé de signification entre les versions 1.0 et 1.1, et aucune version ne convient pour répondre à une requête POST. Pour faire court, il est préférable d'utiliser ce code :
<?php
header('HTTP/1.1 303 See other');
header('Location: http://...');
Pour les détails, rendez-vous sur le blog de Ben Ramsey : http://benramsey.com/archives/http-status-redirection/
Vous devez être identifié pour poster un commentaire.

Je viens de rectifier quelques incorrections dans mon cours PHP, dans la section des Services Web. Je n'abordais pas le sujet de manière adéquate, certaines confusions classiques n'étaient pas éclaircies.
La distinction entre les types de services Web est maintenant plus nette : SOAP/RPC d'une part, REST de l'autre.
J'en ai profité pour ajouter des exemples avec les classes internes de PHP : SoapServer et SoapClient ![]()
Vous devez être identifié pour poster un commentaire.
Copyright © 2000-2012 - www.developpez.com