J'ai une page Web qui a un formulaire qui est soumis via POST. Ce POST-route traite certaines données et redirige l'utilisateur vers une route GET. Le problème: La route GET est appelée plusieurs fois, généralement trois fois. Donc trois GET sont tirés et l'utilisateur voit la première requête GET. Les deux autres requêtes GET que je peux voir sur mes journaux.Post/Redirect/Get: Get est appelé plusieurs fois
Parfois, il arrive même que l'EEG est appelé plus de trois fois ...
(Bien sûr, la route POST est simplement appelé une fois ...)
Par la façon dont je me sers JRuby/JRack/Sinatra sur Jetty (-> Google App Engine.) Le problème se produit localement et à distance.
Philip
J'ai vu que la réponse du serveur * après * la demande POST est un 302, c.f. http://www.gittr.com/index.php/archive/details-of-sinatras-redirect-helper/ J'ai changé le code en 303 mais le problème reste le même ... – Philip
J'ai été capable de déboguer le problème beaucoup plus: Dans la réponse HTML GET, il y a un Javascript qui charge une image du serveur avec une URL relative. (/image/some_image.png) Si je supprime le code qui charge l'image, le problème ne se produit pas. En fait, en répondant à l'image-GET le serveur envoie quelques 304 choses (numéro de séquence correspondant à la demande) ... De toute façon je peux résoudre le problème en rendant l'URL absolue et en incluant un nom d'hôte ... – Philip
POST via un client de ligne de commande comme cURL pour (a) vérifier que votre client n'envoie pas plusieurs requêtes GET, et (b) faire les requêtes POST et GET séparément pour vérifier qu'aucun des GET excédentaires n'est déclenché par la requête POST. Vous pouvez utiliser 'curl -vL' pour imprimer les requêtes émises et suivre les redirections, et ctrl-z &' fg' (si sous linux) pour faire une pause entre POST et GET pour vérifier les logs de votre serveur. –