2008-11-07 10 views
1

Salutations,Firefox 3 ne permet pas « Retour » à une forme si le résultat de la forme dans une redirect dernière fois

Voici le problème que je vais avoir. J'ai une page qui redirige directement vers une autre page la première fois qu'elle est visitée. Cependant, si l'utilisateur clique sur «retour», la page se comporte différemment et affiche le contenu (suivi des ID de session pour s'assurer que c'est la deuxième fois que la page a été chargée). Pour ce faire, je dis au navigateur de l'utilisateur de désactiver la mise en cache pour la page concernée.

Cela fonctionne bien dans IE7, mais Firefox 3 ne me permet pas de cliquer sur «retour» à une page qui a entraîné une redirection. Je suppose qu'il fait ceci pour empêcher le dos typique -> réorienter la boucle qui frustre tant d'utilisateurs. Des idées pour comment je peux passer outre ce comportement?

Alexey

EDIT: La page que nous redirigeons à un site extérieur sur lequel nous ne contrôlons pas. Les redirections côté serveur ne fonctionneront pas car cela ne génèrerait pas de bouton "retour" dans le navigateur.

Pour citer:

Certaines personnes dans le fil parlent de redirection côté serveur, et redirigent les en-têtes (même chose) ... garder à l'esprit que nous avons besoin de redirection côté client qui peut être fait a) Un en-tête META - Non recommandé, et a quelques problèmes b) Javascript, ce qui peut être fait au moins de trois façons ("location", "location.href" et "location.replace")() ")

La redirection côté serveur n'active et ne doit pas activer le ba bouton ck, et ne peut pas afficher la page typique "Vous serez redirigé maintenant" ... donc ce n'est pas bon (c'est ce que nous faisons en ce moment, en fait .. où vous êtes immédiatement redirigé vers le "chanceux "page).

Répondre

1

Vous pouvez contourner ce problème en créant un iframe et en enregistrant l'état de la page dans un champ de formulaire dans l'iframe avant d'effectuer la redirection. Tous les navigateurs enregistrent les champs de formulaire d'un iframe.

This pag e a une très bonne description de la façon de le faire fonctionner. C'est la même technique que Google Maps utilise lorsque vous cliquez sur les résultats de recherche de carte.

+0

Un peu en retard, mais cela semble être la solution. Merci! – AlexeyMK

2

Je pense que l'équipe Mozilla fait un pas dans la bonne direction en brisant ce modèle particulièrement ennuyeux. Trouver un moyen de contourner en quelque sorte défie le but, n'est-ce pas? Au lieu de rediriger lors de la première rencontre, vous pouvez simplement faire en sorte que votre page s'affiche différemment lorsqu'un utilisateur la rencontre la première fois. Devrait être assez facile du côté du serveur, puisque vous avez déjà le code qui est capable de faire cette distinction.

+0

Je suis d'accord avec vous en principe, mais dans notre particulier cas d'utilisation cela brise certaines fonctionnalités plutôt utiles. La page en cours de redirection est un site externe sur lequel nous n'avons aucun contrôle, donc le rendu différemment ne fonctionnerait pas (nous pourrions IFrame, mais nous perdrions l'URL correcte) – AlexeyMK

+0

Je vois. Que diriez-vous d'une redirection utilisant un tag ? Pouvez-vous essayer si cela entraîne le même comportement? – Tomalak

+0

Le même comportement, malheureusement. – AlexeyMK

0

Son éventuellement dans l'aide pour éliminer les actions répétées.

Beaucoup de façons dont les gens font des choses est

page 1 -> [Action] -> page 2 -> redirect à la page 2 sans que les paramètres d'action.

Maintenant, si vous étiez autorisé à cliquer sur le bouton Précédent dans cette situation et à visiter la page sans la redirection, l'action serait exécutée à l'aveugle. À la place, firefox suppose que le serveur a envoyé un en-tête de redirection pour une bonne raison. Bien qu'il soit noté que vous pouvez cependant avoir du contenu délivré après l'en-tête de redirection, envoyer un en-tête de redirection (au moins en php) ne met pas fin à l'exécution, donc en théorie, si vous deviez ignorer la demande de redirection obtiendrait la page faire des trucs bizarres.

(je circonvenir ce par le fait tous nos redirections sont effectuées via le même appel de fonction, où j'appelle explicite se terminer directement après la redirection, parce que les gens quand le codage suppose que c'est la façon dont il se comporte)

1

I » m fortement en faveur du comportement de Firefox.

La manière la plus simple de rediriger est de laisser le serveur envoyer HTTP status code 302 + Location header au client. De cette façon, le client (généralement un navigateur) ne placera pas l'URI de la demande dans son historique, mais renverra simplement la même requête à l'URI préconisée.

Maintenant, il semble que Firefox a commencé à appliquer le bevaviour également pour les réponses du serveur qui essaient des redirections, par exemple. par l'événement onload de Javascript.

Si vous voulez que le navigateur n'affiche pas une page, je pense que la meilleure solution est si le serveur n'envoie pas la page en premier lieu.

0

Dans la fenêtre URL de type Firefox about: config
modifier ce paramètre dans Firefox
browser.sessionstore.postdata
changement de 0 à 1

Questions connexes