如何使用JavaScript清除身份验证缓存?

时间:2012-06-07 10:55:09

标签: javascript firefox authentication cache-control

我遇到了使用JavaScript清除浏览器(FireFox和Chrome)之间的身份验证缓存。

通过这篇文章Link的引用,使用XMLHttpRequest清除非IE浏览器缓存的部分在我的情况下不起作用。

我正在寻找替代方式,任何建议?请帮忙

先谢谢你。

2 个答案:

答案 0 :(得分:1)

浏览器处理提供的凭据的精确规则 - 如果从Javascript提供时将保存它们,并且如果正确或不正确的尝试将覆盖身份验证缓存,则不会在任何地方进行标准化。

此外,开发人员倾向于考虑任何允许无人值守的存储操作,通常需要用户手动交互,例如那些“你想保存密码吗?”提示,由于某些原因,即使过去有效,也会因为不安全而及时堵塞漏洞。

因此,我建议不要依赖它,也不要尝试从脚本中清除/无效此缓存。

答案 1 :(得分:1)

我一直在寻找类似的解决方案,并且遇到了Trac(一个问题管理系统)的补丁。

我查看了代码(我很累,所以我不解释所有内容);基本上你需要做一个AJAX调用,保证登录页面的无效凭据。浏览器将获得401并且知道它需要在您下次去时询问您正确的凭据。您使用AJAX而不是重定向,以便您可以指定不正确的凭据,并且浏览器不会弹出对话框。

在补丁(http://trac-hacks.org/wiki/TrueHttpLogoutPatch)页面上,他们使用非常基本的AJAX;像jQuery或Prototype等更好的东西可能更好,虽然这可以完成工作。