Попередити повідомлення "Термін дії документа закінчився" та просто показати сторінку з минулим терміном?


13

Коли я надсилаю форму, а потім натискаю назад, іноді я отримую повідомлення "Термін дії документа закінчився" замість останньої сторінки.

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

Натомість я отримував наступне дратівливе вікно повідомлень (яке тепер з’являється після натискання на «Спробувати ще раз»):

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

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

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

Тож як я можу повністю позбутися від повідомлень "Термін дії документа" та "Підтвердити" та змусити Firefox просто відобразити кешоване останнє місце після надсилання форми POST? about:configналаштування, розширення, проксі-трюки - це все добре.


3
Ви запитуєте, як відобразити запис кешу документа, який не є кешованим. Це неможливо.
паа

3
Ну, тоді розширенням я запитую, як зробити так, щоб Firefox також кешував документ :-).
jdm

1
Я дуже часто стикаюся з цим, коли все, що я намагаюся зробити, - це створити резервну копію історії перегляду, щоб дістатися кудись до появи проблеми. Щось подолати цей блокпост було б дуже корисно. Я знаю, що можу використовувати кнопку Історія на головній панелі інструментів, але часто важко зрозуміти, який запис вибрати.
Джо

@jdm ви запитуєте 1) як відобразити сторінку, якою я переходив так само, як я бачив її раніше; 2) і як позбутися вікна підтвердження браузера для повторного надсилання даних. Я зрозумів це чітко?
laika

@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 GMT"); заголовок ("Last-Modified:" .gmdate ("D, d MYH: i: s"). "GMT"); заголовок ("Кеш-контроль: пост-перевірка = 0, попередня перевірка = 0", помилка); session_cache_limiter ("необхідно повторно відредагувати");


2
Я не впевнений, що @jdm має контроль над сторінками, на яких вони говорять.
Valmiky Arquissandas

2

Відповідь на https://support.mozilla.org/fr/questions/1010942 : просто перевірте Інструменти-> Параметри-> Заміна автоматичного кеш-керування.


Це воно! Цей параметр знаходиться в розділі Інструменти / Параметри / Розширений / Мережа / Перезапис автоматичного кеш-керування. Не впевнений, чи працює він у всіх випадках "Документ минув", але він працював у тому, що я мав, коли мені не вдалося переглянути джерело відповіді POST.
RomanSt

Це не повинно впливати на цю проблему, оскільки вона дозволяє лише встановити розмір кешу: support.mozilla.org/en-US/questions/1037647 Цікаво, яким був автоматично визначений розмір кешу, якщо це допоможе. .
Ніколай
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.