防止显示“文档已过期”消息,而只显示已过期的页面?


13

当我提交表单然后按回去时,有时会收到消息“文档已过期”,而不是最后一页。

在此处输入图片说明

我以前得到的是以下令人讨厌的消息框(单击“重试”后现在显示):

在此处输入图片说明

现在,我知道这意味着什么,以及为什么火狐显示了此消息。但是,我只想看最后查看的页面,就像第二次显示的一样。没有弹出窗口,也没有重新加载以反映服务器的新状态。(也许有一个小信息栏会很好,但是对我来说不是必需的)。

用例:假设我登录了一个我经常使用的站点,然后按Enter键,我在登录页面的角落看到了一个新闻标题。我想点击返回并查看第二天​​之前看到的确切页面,点击标题。如果我查看登录的首页,或者只是重新加载它,可能会得到不同的(随机的)标题。

那么,如何完全消除“文档已过期”和“确认”消息,并让Firefox在提交POST表单后仅显示缓存的最后一个位置? about:config设置,扩展名,代理技巧都可以。


3
您正在询问如何显示未缓存文档的缓存条目。这是不可能的。
paa 2013年

3
好吧,接下来我要问的是,如何让Firefox也缓存文档:-)。
jdm

1
当我要做的就是通过浏览历史记录备份到问题发生之前的某个地方时,我会遇到很多问题。克服这一障碍将非常有用。我知道我可以使用主工具栏上的“历史记录”按钮,但是通常很难弄清楚要选择哪个条目。

@jdm您正在询问1)如何以我以前看过的方式显示我浏览过的页面;2)以及如何摆脱浏览器的确认框以重新发送数据。我明白了吗?
Laika

@sjrco:1)是,但不是2)。我希望能够单击返回并查看其中的内容(页面状态相同),然后再导航。(即使某些页面已被js修改或用户填写了表单,该方法仍可在某些页面上使用,因此浏览器必须在某些情况下保存修改后的文档)。我不希望浏览器以静默方式重新发送数据。我确实想在不重新发送数据时取消模式对话框。
jdm

Answers:


2

如果服务器允许缓存,则Firefox引擎不(或不应)缓存文档的最后状态,仅缓存HTML文档本身。Opera具有(或可能仍然具有)此功能,但它使网站运营商倍感安全隐患。

RFC 2616指出:

13.4响应缓存

除非特别受cache-control(第14.9节)指令约束,否则高速缓存系统应始终将成功的响应(请参见第13.8节)存储为高速缓存条目,如果不新鲜则可以不经验证就将其返回,并且在成功进行验证后可以将其返回。 。

如今,许多站点在服务器生成的所有响应上都使用了缓存控制标头,以避免缓存问题。即使您让Firefox在以前的状态下为您提供文档,但在大多数站点上无论如何还是不应该工作。最安全,最适合未来的解决方案是要求网站所有者正确编码其网站。


1
但是至少在某些情况下,它确实缓存了最后一个状态。试试这个:gist.github.com/jdmansour/5578079。至少保留了DOM。
jdm

1
历史记录和缓存不是同一回事。参见同一RFC的 13.13节。后退按钮要求重新显示历史记录条目,而不是高速缓存条目。歌剧是对的;Firefox是错误的。任何声称这是“安全”功能的人都是愚蠢的。您始终可以使用“在新选项卡中打开”,然后在服务器不知道自己这样做的情况下关闭新选项卡以查看上一页。正常运行的后退按钮应具有该效果。

2

要消除所有这些消息,请在所有脚本的开头添加以下PHP行:

header(“ Expires:Sat,01 Jan 2000 00:00:00 GMT”); header(“最后修改时间:”。gmdate(“ D,d MYH:i:s”)。“ GMT”);header(“ Cache-Control:post-check = 0,pre-check = 0”,false); session_cache_limiter(“必须重新验证”);


2
我不确定@jdm是否可以控制他们正在谈论的页面。
Valmiky Arquissandas 2014年

2

答案在https://support.mozilla.org/fr/questions/1010942上:只需选中工具->选项->覆盖自动缓存管理。


就是这个!该设置位于“工具” /“选项” /“高级” /“网络” /“覆盖自动缓存管理”下。不知道它是否适用于“ Document Expired”的所有情况,但是它适用于我无法查看POST响应源的情况。
RomanSt

这应该不会对这个问题产生任何影响,因为它仅允许您设置缓存大小:support.mozilla.org/en-US/questions/1037647我想知道自动确定的缓存大小是否有帮助。 。
Nickolay
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.