"Merci d'avoir posté. Veuillez patienter pendant que vous êtes redirigé. » Nécessaire?

11

Merci d'avoir posté. Veuillez patienter pendant que vous êtes redirigé.

Si vous n'êtes pas automatiquement redirigé, veuillez cliquer ici.

Vous connaissez probablement des messages comme ceux-ci, surtout lorsque vous utilisez le Web dans les années 90 ou au début des années 2000. Dans mes propres projets, je n'ai jamais trouvé de raison de faire attendre l'utilisateur 2 à 3 secondes pendant qu'il est redirigé après l'enregistrement ou la publication de quelque chose, par exemple. Mais ce modèle revient tout le temps, même dans les logiciels Web populaires comme PHPBB.

Ma question est, la redirection a-t-elle toujours une place / un besoin dans le développement web moderne (ajaxy)? Y a-t-il des situations qui nécessitent absolument une redirection comme celle-ci, qui ennuie finalement l'utilisateur, et quelles sont les raisons techniques derrière elles ? Pourquoi ne pas simplement rediriger instantanément si une redirection est requise?

Lotus Notes
la source
Juste une supposition: peut-être que cela est en quelque sorte lié à la prévention des actions ou des robots scriptés? Il existe cependant de meilleures méthodes (Captchas, etc.).
En raison de la demande de l'utilisateur, j'ai modifié mon installation de PHPBB pour la rediriger immédiatement. Cela n'a pris que quelques changements de ligne et fonctionne parfaitement.
André Paramés
@Martin: peut-être, mais si c'est le cas, c'est complètement erroné, car tout bot peut suivre les redirections comme n'importe quel navigateur (surtout s'il y a un en-tête Location, comme dans PHPBB).
André Paramés

Réponses:

3

Y a-t-il des situations qui nécessitent absolument une redirection comme celle-ci, qui ennuie finalement l'utilisateur, et quelles sont les raisons techniques derrière elles?

L'intention la plus courante (généralement dans le cas d'une demande qui crée un nouvel enregistrement dans une base de données, traite une transaction de paiement, etc.) est la prévention des demandes en double si l'utilisateur clique sur le bouton "Actualiser" et republie la demande.

La redirection a-t-elle toujours une place / un besoin dans le développement web moderne (ajaxy)?

Si vous parvenez à dire aux utilisateurs qui ont désactivé Javascript que leurs demandes seront ignorées ou éventuellement mal traitées (le message "Ne cliquez pas sur soumettre plus d'une fois!" Vient à l'esprit), bien sûr - mais ce n'est pas un énorme effort pour soutenir ces excentriques Utilisateurs désactivés JS et garantissent que le service de facturation ne voit pas la réclamation occasionnelle de double facturation, de sorte que la redirection est toujours implémentée dans de nombreuses interfaces.

Pourquoi ne pas simplement rediriger instantanément si une redirection est requise?

La redirection doit être émise instantanément si le but est d'empêcher les soumissions de formulaires multiples - dans le cas des redirections chronométrées, elles sont peut-être orientées vers des serveurs lents, elles n'ont pas réussi à prendre en compte un verrouillage basé sur la session, ou elles essaient de résoudre un problème plus ésotérique.

danlefree
la source
"est la prévention des demandes en double" --- la redirection d'emplacement silencieuse le fait également. « La redirection doit être émis instantanément si le but est d'éviter que plusieurs soumissions de formulaire » --- il ne devrait pas, parce que F5sur la Stand bypage causeront également poste de réémettre.
zerkms
@zerkms - Je suggère une redirection vers un nouvel emplacement avant l'envoi d'un corps de réponse (c'est-à-dire pas de page "stand by")
danlefree
5

Tout d'abord, tous les navigateurs ne redirigeront pas lorsqu'ils auront un en-tête Location. Deuxièmement, tous les navigateurs ne redirigeront pas avec Javascript car il est désactivé. Troisièmement, tous les navigateurs ne prendront pas en charge les balises meta-refresh. N'importe lequel de ces cas est probablement très rare, donc cela n'aura probablement pas d'importance. Mais même si c'est le cas, vous pouvez chevaucher toutes ces méthodes, je pense.

La façon dont les pages PHPBB le font (attend 5 secondes ou quelque chose) n'est pas du tout nécessaire. Il devrait rediriger immédiatement et si ce n'est pas le cas, il affichera la page HTML (qui contient une méta-actualisation et Javascript et du texte avec un lien) après l'envoi des en-têtes. Il n'y a presque aucune chance que cette page soit affichée par un navigateur normal si elle est correctement programmée.

Joe Phillips
la source
"Tout d'abord, tous les navigateurs ne redirigeront pas lorsqu'ils auront un en-tête Location" [citation nécessaire]
Jon Cram
@Jon Cram: techniquement, les proxys Web et les extensions peuvent interférer avec l'en-tête de l'emplacement. Le navigateur peut également être un agent utilisateur non standard et le propriétaire du site essaie de les décourager de suivre des liens hors site en présentant quelque chose qu'un utilisateur peut facilement suivre.
Brian Lyttle
Suis-je en train de vous lire correctement dans le fait que l'appel à la header()fonction de PHP pourrait être ignoré? Cela m'inquiète beaucoup. J'étais déjà au courant des méthodes de redirection HTML et JS et de la façon dont elles sont moins fiables, mais je n'ai jamais pensé qu'un en-tête HTTP envoyé par le serveur pouvait être ignoré.
Lotus Notes
1
@Lotus Beaucoup de gens n'envoient pas correctement l'en-tête, ce qui est le plus gros problème. Vous êtes censé inclure un code 3xx avant ce que beaucoup de gens ne font pas. Un navigateur pourrait ignorer cette demande s'il le voulait (et je suis sûr que certains clients le font, mais pas les navigateurs traditionnels)
Joe Phillips
Notez également qu'un en-tête Location est censé envoyer une URL absolue , mais cela est souvent ignoré.
Piskvor a quitté le bâtiment le
3

J'envoie toujours une redirection dans l'en-tête de réponse avec le code d'état HTTP approprié (par exemple 301 ou 302 - voir http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html ), ce qui entraîne une redirection immédiate. Je ne connais pas de bonnes raisons techniques pour lesquelles quelqu'un afficherait un "veuillez patienter pendant que vous êtes redirigé".

Will Peavy
la source
1

La principale raison pour cela est qu'un enregistrement est effectué sur le site que vous avez été redirigé. La page pourrait charger Google Analytics, mais les données figureront également dans les blogs.

Si vous envoyez une redirection à l'aide des en-têtes HTTP, le navigateur se rendra sur l'autre site sans faire de demande supplémentaire au site d'origine. Le suivi basé sur Javascript peut intercepter ces sorties, mais il offre au propriétaire du site de meilleures opportunités de suivi.

Dans certains cas, vous souhaiterez peut-être également fournir une clause de non-responsabilité à l'utilisateur lorsqu'il est redirigé. Ceci est particulièrement important pour les webmasters travaillant dans des secteurs réglementés. Si vous ne travaillez pas dans une industrie réglementée comme la banque ou les produits pharmaceutiques, vous n'aurez pas beaucoup d'appréciation pour ces exigences.

Brian Lyttle
la source
Donc, en résumé, ce modèle n'est nécessaire que si vous devez suivre les actions de vos utilisateurs sur le site Web?
Lotus Notes
0

Il permet également au bouton de retour de fonctionner correctement.

Bonjour71
la source