Предотвратить сообщение «истек срок действия документа» и просто показать просроченную страницу?

13

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

введите описание изображения здесь

Я использовал вместо этого следующее раздражающее окно сообщения (которое теперь появляется после нажатия «Попробовать еще раз»):

введите описание изображения здесь

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

Вариант использования: представьте, что я вошел на сайт, которым я регулярно пользуюсь, и после нажатия Enter я вижу заголовок новостей на странице входа в систему. Я хотел бы вернуться назад и увидеть точную страницу, которую я видел секунду назад, чтобы нажать на заголовок. Если я просматриваю первую страницу, вошедшую в систему, или просто перезагружаю ее, я могу получить другие (рандомизированные) заголовки.

Итак, как мне полностью избавиться от сообщений «Срок действия документа истек» и «Подтвердить» и заставить Firefox просто отображать кэшированное последнее местоположение после отправки формы POST? about:configнастройки, расширения, трюки с прокси все в порядке.

JDM
источник
3
Вы спрашиваете, как отобразить запись в кэше не кэшированного документа. Это невозможно.
PAA
3
Ну, а потом я спрашиваю, как сделать так, чтобы Firefox также кэшировал документ :-).
JDM
1
Я сталкиваюсь это много , когда все , что я пытаюсь сделать , это сделать резервную копию через историю просмотра , чтобы куда - то , прежде чем возникла проблема. Иметь что-то, чтобы обойти этот контрольно-пропускной пункт было бы очень полезно. Я знаю, что могу использовать кнопку «Журнал» на главной панели инструментов, но зачастую сложно определить, какую запись выбрать.
Джо
@jdm вы спрашиваете: 1) как отобразить страницу, на которой я переместился, так же, как раньше; 2) и как избавиться от окна подтверждения браузера для повторной отправки данных. Я понял это ясно?
лайка
@sjrco: 1) да, но не 2). Я хотел бы иметь возможность щелкнуть назад и посмотреть, что там было (то же состояние страницы), прежде чем я ушел. (Это работает на некоторых страницах, даже если они были изменены с помощью js, или пользователь заполнил формы, поэтому браузер должен сохранить измененный документ при некоторых обстоятельствах). Я не хочу, чтобы браузер пересылал данные в режиме без вывода сообщений. Я хочу подавить модальные диалоги, когда они не пересылают данные.
JDM

Ответы:

2

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

RFC 2616 заявляет:

13.4 Кэшируемость ответов

Если это не ограничено директивой управления кэшем (раздел 14.9), система кэширования МОЖЕТ всегда сохранять успешный ответ (см. Раздел 13.8) в качестве записи кэша, МОЖЕТ вернуть его без проверки, если он свежий, и МОЖЕТ вернуть его после успешной проверки ,

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

Янош Пазтор
источник
1
Но он кеширует последнее состояние, по крайней мере, при некоторых обстоятельствах. Попробуйте это: gist.github.com/jdmansour/5578079 . По крайней мере, DOM сохраняется.
JDM
1
История и кеш не одно и то же. См. Раздел 13.13 того же RFC . Кнопка «Назад» запрашивает повторное отображение записи истории, а не записи в кэше. Опера права; Firefox не прав. Любой, кто утверждает, что это функция "безопасности", глуп. Вы всегда можете использовать «открыть в новой вкладке», а затем закрыть новую вкладку, чтобы увидеть предыдущую страницу, и сервер не узнает, что вы это сделали. Правильно работающая кнопка возврата должна иметь именно такой эффект.
2

Чтобы избавиться от всех этих сообщений, добавьте следующие строки PHP в начало всех ваших скриптов:

заголовок («Истекает: суббота, 01 января 2000 г. 00:00:00 по Гринвичу»); header («Последнее изменение:» .gmdate («D, d MYH: i: s»). «GMT»); заголовок («Cache-Control: post-check = 0, pre-check = 0», false); session_cache_limiter ( "обязательно перепроверить");

user349823
источник
2
Я не уверен, что @jdm контролирует страницы, о которых они говорят.
Валмики Аркиссандас
2

Ответ на https://support.mozilla.org/fr/questions/1010942 : просто выберите Инструменты-> Параметры-> Переопределить автоматическое управление кэшем.

Брет
источник
Это оно! Параметр находится в разделе Инструменты / Параметры / Дополнительно / Сеть / Переопределить автоматическое управление кэшем. Не уверен, что он работает для всех случаев «истек срок действия документа», но он работал на тот, который у меня был, где я не смог просмотреть источник ответа POST.
RomanSt
Это не должно иметь никакого влияния на эту проблему, поскольку позволяет только установить размер кэша: support.mozilla.org/en-US/questions/1037647 Интересно, каким был автоматически определенный размер кэша, если это поможет ... .
Nickolay