Firefox 3 не позволяет «Назад» к форме, если форма в последний раз приводила к перенаправлению - PullRequest
1 голос
/ 07 ноября 2008

Привет,

Вот проблема, с которой я столкнулся. У меня есть страница, которая перенаправляет непосредственно на другую страницу при первом посещении. Однако если пользователь нажимает кнопку «назад», страница ведет себя по-другому и вместо этого отображает содержимое (отслеживая идентификаторы сеанса, чтобы убедиться, что это вторая загрузка страницы). Для этого я говорю браузеру пользователя отключить кеширование для соответствующей страницы.

Это хорошо работает в IE7, но Firefox 3 не позволит мне нажать «назад» на страницу, которая привела к перенаправлению. Я предполагаю, что это делает это, чтобы предотвратить типичный цикл back -> redirect again, который расстраивает многих пользователей. Любые идеи о том, как я могу изменить это поведение?

Алексей

РЕДАКТИРОВАТЬ: страница, на которую мы перенаправляем, является внешним сайтом, который мы не можем контролировать. Перенаправления на стороне сервера не будут работать, потому что это не сгенерирует кнопку «назад» для браузера.

Цитировать:

Некоторые люди в потоке говорят о перенаправлении на стороне сервера и перенаправлении заголовков (то же самое) ... имейте в виду, что нам нужно перенаправление на стороне клиента, которое можно сделать двумя способами:

a) Заголовок META - не рекомендуется и имеет некоторые проблемы б) Javascript, который может быть выполнен как минимум тремя способами («location», «location.href» и «location.replace ()»)

Перенаправление на стороне сервера не будет и не должно активировать кнопку «Назад» и не может отобразить типичную страницу «Вы будете перенаправлены сейчас» ... так что это бесполезно (это то, что мы делаем на момент, на самом деле .. где вы сразу же перенаправлены на «счастливую» страницу).

Ответы [ 5 ]

2 голосов
/ 07 ноября 2008

Я думаю, что команда Mozilla делает шаг в правильном направлении, преодолев эту особенно раздражающую схему. Найти способ как-то это не вписывается в цель, не так ли?

Вместо перенаправления при первом обращении, вы можете просто заставить свою страницу отображаться иначе, когда пользователь нажимает на нее в первый раз. Должно быть достаточно просто на стороне сервера, так как у вас уже есть код, способный сделать это различие.

1 голос
/ 08 февраля 2010

Вы можете обойти это, создав iframe и сохранив состояние страницы в поле формы в iframe перед выполнением перенаправления. Все браузеры сохраняют поля формы в iframe.

Эта страница e имеет действительно хорошее описание того, как заставить ее работать. Это та же самая техника, которую использует Google Maps при нажатии на результаты поиска по карте.

1 голос
/ 07 ноября 2008

Я полностью поддерживаю поведение Firefox.

Самый простой способ перенаправления - позволить серверу отправить HTTP-код состояния 302 + Заголовок местоположения обратно клиенту. Таким образом, клиент (обычно браузер) не будет помещать URI запроса в свою историю, а просто отправит тот же запрос в защищенный URI.

Теперь кажется, что Firefox начал применять bevaviour также для ответов сервера, которые пытаются перенаправления, например. по событию загрузки Javascript.

Если вы хотите, чтобы браузер не отображал страницу, я думаю, что лучшим решением будет, если сервер не отправит страницу в первую очередь.

0 голосов
/ 06 марта 2010

В окне URL Firefox введите about: config
Измените этот параметр в Firefox
browser.sessionstore.postdata
Изменить с 0 на 1

0 голосов
/ 07 ноября 2008

Это возможно в помощь, чтобы устранить повторные действия.

Много способов, которыми люди делают вещи,

страница 1 -> [Действие] -> страница 2 -> перенаправить на страницу 2 без параметров действия.

Теперь, если вам было разрешено нажать кнопку «Назад» в этой ситуации и перейти на страницу без перенаправления, действие будет выполнено вслепую.

Вместо этого Firefox предполагает, что сервер отправил заголовок перенаправления по уважительной причине.

Хотя и отмечается, что контент может доставляться после заголовка перенаправления, отправка заголовка перенаправления (по крайней мере, в php) не прекращает выполнение, поэтому в теории, если бы вы игнорировали запрос на перенаправление, вы бы получить страницу, делая странные вещи.

(я обхожу это из-за того, что все наши перенаправления выполняются с помощью одного и того же вызова функции, где я вызываю явное завершение сразу после перенаправления, потому что люди при кодировании предполагают, что это так и есть)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...