最近在看一个问题: AppScan 扫出了一个浏览器中的cache可能不安全的问题。解决方法就是disable cache.
response.setHeader("Cache-Control", "no-store");
response.setHeader("Pragma", "no-cache");
response.setDateHeader("Expires", -1);
带来了一个新的问题,就是当用户点击后退按钮时,会链接失败,必须重新点刷新按钮去server拿数据。在试图解决这个问题时,有几个错误的思路,很是走了弯路。记下来长个记性:
1。 试图通过js去捕捉浏览器的后退事件。事实上是不可能的,js 作为一个脚本文件只可以捕捉网页事件,或者模拟后退行为。浏览器是一个本地客户端,我们无法通过js去操作一个本地客户端软件。
2。 试图通过 js 获取history的url. 事实上也是不可以的。 js在设计的时候,由于security的考虑,尽管有window.history对象,但是无法通过该对象去获取历史的url. 只能history.forward或history.back.
其实我个人认为,同时达到disable cahe 和 后退按钮正常工作本身就是矛盾的。目前这个问题的初步解决方法是恢复cache,当然前提是我们检查了cache,里面没有敏感的信息。
教训就是:在禁用cache时一定要考虑对后退功能的影响