如何使用JavaScript或Java清除浏览器(IE、Firefox、Opera、Chrome)历史记录,而不是通过浏览器本身?

11
如何使用JavaScript或Java清除浏览器(IE,Firefox,Opera,Chrome)历史记录,而不是从浏览器自身清除?

4
如果这种事情真的可能的话,那将是非常令人讨厌的! - Jørn Schou-Rode
你为什么需要能够做到那个? - animuson
如何清除浏览器历史记录,而不是从浏览器本身清除?您能更具体一些吗? - rahul
因为从历史记录中,某些信息将被查看。例如,在任何银行网站上浏览时,只有主页会进入浏览器的历史记录,而所有其他页面(登录后的页面)则不会。 - Yogi
最佳答案在这里:https://dev59.com/52Yq5IYBdhLWcg3weAWj#14488769。即ajax和(初始的)iframe URL不会被存储在历史记录中。 - Sam Watkins
4个回答

21

浏览器中的document.location数据通常对脚本不可见,因为允许访问会使任何网站都能够访问您的整个浏览历史记录。最多只能进行一些简单的操作,比如“转到历史记录条目#37”或“返回上一页”。但是您无法执行“历史记录条目#23的页面地址是什么”的操作。

大多数银行网站将使用JavaScript链接来防止建立点击历史记录。它们会执行document.location.replace"以删除最后一个历史记录条目(当前页面),并用新页面的地址替换它。这实际上删除了“返回”选项以返回上一页,因为之前的页面(就浏览历史记录而言)现在是新页面。


他们会怎么处理最后一页呢?它仍然会留在历史记录中... - inf3rno

2

浏览器不会让你清除它的缓存,如果这是可能的话,那将是一个巨大的安全问题。

你可以做的是通过发送适当的头信息或使用这些meta标签来告诉浏览器不要缓存你的页面:

<meta http-equiv='cache-control' content='no-cache'>
<meta http-equiv='expires' content='0'>
<meta http-equiv='pragma' content='no-cache'>

我想指出,如果您正在处理敏感数据,则应使用SSL。如果您不使用SSL,则可以访问网络的任何人都可以嗅探网络流量并轻松地查看您的用户所见的内容。
同时,使用SSL还会使一些浏览器不使用缓存,除非明确告知。请参阅此问题:Will web browsers cache content over https

2
简而言之,不可能实现,沙箱技术阻止浏览器和脚本/小程序修改或创建任何文件,除了少数特例。允许Javascript和Java小程序清除其他网站的cookie或页面缓存内容是不可取的。

3
但在某些银行网站上是可能实现的。那么他们是如何做到的呢? - Yogi

0

但是如果你想要清除实际页面,你可以使用:

$(function () {
//replace() does not keep the originating page in the session history,
document.location.replace("/Exercises#nocache"); // clear the last entry in the history and redirect to new url
});

This is used by some banking websites


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