我能否禁用FF3的后退按钮缓存?

7
我发现即使我发送以下标头,当按下后退按钮时,它仍会从浏览器缓存中获取先前的页面:
Test1.aspx
Server              ASP.NET Development Server/9.0.0.0
Date         Wed, 24 Mar 2010 17:49:40 GMT
X-AspNet-Version 2.0.50727
Location         Test2.aspx
Cache-Control no-cache, no-store
Pragma         no-cache
Expires         -1
Content-Type text/html; charset=utf-8
Content-Length 189
Connection         Close
3个回答

4

expires应该是一个日期+时间戳,同时cache-control的"must-revalidate"和"max-age"也可能有帮助吗?

Expires: Wed, 11 Jan 1984 05:00:00 GMT
Cache-Control: no-cache, must-revalidate, max-age=0

实际上答案很简单。但我想让其他人知道。浏览器不会缓存页面,而是缓存请求。因此,如果您有一个名为Test.aspx的页面,其中包含一个指向自身的链接。用户首次打开页面,然后单击链接(这里添加了no-cache),然后按返回按钮,页面将从缓存中检索,因为第一次下载时没有使用no-cache指令。 - Sergej Andrejev
1
浏览器会缓存响应,通常是页面,对吧?如果我没记错的话,“no-cache”已经在第一次请求时就会出现在HTTP响应头中了。 - futtta
1
应该为 Google Chrome 包括 Cache-Control: no-store - ajbeaven

1

Cache-control和类似的东西只是告诉浏览器不要将下载的内容(js、css、图像等)保存在缓存中。它与访问过的页面历史记录无关。

您不应该尝试修改浏览器的数据。相反,您应该处理事件并停止您不想在您的网站上发生的事件。


4
如果我有敏感数据,例如公共投票亭。用户选择总统候选人,然后点击提交。现在下一个选民前往亭子,按返回按钮,看到先前用户选择的候选人,因为浏览器甚至没有尝试从服务器获取最新版本并显示缓存中的版本。那么我该怎么办? - Sergej Andrejev
2
这意味着你的应用程序行为有误。事务、会话和类似的东西都是为了处理对敏感数据访问的限制而设计的。当Web应用程序说“记得关闭你的会话”时,它们是认真的!此外,如果你的应用程序将机密数据放在浏览器缓存中,那么这意味着你正在打开一个新的安全漏洞。简单明了(除非你加密它!)。你不能依赖于未经授权的修改浏览器数据(根据定义,它在用户端)来提供安全性。这太像数字版权管理(DRM),把所有的安全性都放在同一方面。 - Alfabravo

1

对于我来说,头部的以下设置有效:

Pragma: no-cache

Cache-Control: no-cache, no-store

Expires: 0


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接