Question

Est-il possible de créer une réponse HTTP telle que le navigateur l’ignore et continue à afficher la page précédemment affichée?

Je parle du scénario suivant:

a) l'utilisateur clique sur quelque chose

b) un POST va au serveur (ou à GET, mais restons avec POST comme plus intéressant)

c) le serveur décide que, pour une raison quelconque, il ne souhaite pas envoyer de réponse pour le moment

d) le serveur envoie une réponse spécialement conçue

e) navigateur ne montre pas la page d'erreur, ne montre pas la page vide, ne redirige pas n'importe où, ne recharge pas - continue à montrer ce qu'il montrait comme si l'utilisateur n'avait jamais soumis le formulaire

PS Bien sûr, il peut être encapsulé avec AJAX, mais je demande si une solution non-javascript complète est possible

Était-ce utile?

La solution

Essayez de renvoyer HTTP 204 sans contenu. Voir la description de ce code de réponse dans la RFC 2616 (protocole de transfert hypertexte - - HTTP / 1.1) où il est indiqué:

  

Si le client est un agent d'utilisateur, il NE DEVRAIT PAS changer sa vue de document à partir de celle-ci.   qui a provoqué l'envoi de la demande. Cette réponse est principalement destinée à permettre   entrée pour que les actions se déroulent sans provoquer de modification de l'actif de l'agent d'utilisateur   document, bien que toute métainformation nouvelle ou mise à jour DEVRAIT être appliquée à la   document actuellement dans la vue active de l'agent utilisateur.

Autres conseils

Il s'agit d'une méthode généralement appelée AJAX . Il nécessite Javascript et le Fonction XMLHttpRequest .

Modifier: remarquez votre "PS" en bas. La réponse 204 suggérée dans une autre réponse pourrait être valide. solution non-Javascript.

Supposons que vous fassiez cela.

Que fait l'utilisateur? Soumettez le formulaire à nouveau, bien sûr.

Plusieurs fois.

Ensuite, ils décident que votre site est cassé et s'en vont.

Je pense que vous avez besoin de Javascript pour le faire, vous pouvez envoyer la demande et en fonction de la réponse du serveur, le Javascript peut faire un retour faux, en évitant l'actualisation / le rechargement de la page réelle.

Je ne connais pas la réponse 204, mais vous pourrez peut-être le faire du côté serveur.

Une autre façon de le faire (aussi avec Javascript) est de faire un retour faux, juste après l'envoi de la demande, et en fonction de la réponse du serveur (avec ajax), vous pouvez modifier la page ou envoyer l'utilisateur vers une autre page.

Non. Le protocole HTTP consiste en un cycle requête-réponse. Le serveur ne peut pas décider de ne pas répondre (oui, mais le protocole est rompu et une erreur est commise).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top