禁止用户使用浏览器后退

用户在登录后使用浏览器的后退功能可退回到登录页并显示用户输入的登录账号,有客户认为此泄露客户信息
另外在需要提交的表单使用浏览器后退 修改 再提交也可能会造成不可预料的问题。

服务器端可解决方案
可使用
response.setHeader("Cache-Control","no-cache");
response.setHeader("Pragma","no-cache");
response.setDateHeader ("Expires", 0);
使浏览器不缓存页面,后退后重新向服务器获取页面,
可在用户访问登录页面时可做判断,若用户已登录直接跳转到用户登录的主界面

另外将Expires设置为-1时,用户在后退时浏览器会提示页面已过期,可防止用户后退到要提交的表单
在用户提交的表单的页面最好设置令牌防止由于处理慢页面任停留在原页面并在此点击造成重复提交
处理成功后最好重定向以防止用户刷新页面造成重复提交

此外允许用户重复提交的页面刷新post提交的表单时,
页面会弹出提示款确认用户是否要重新提交,使用get提交可避免此问题

浏览器脚本可解决方案

在不能被回退的页面上编写js脚本window.history.forward()
该方法相当于使用浏览器的前进,用户首次到达该页面由于无法前进该脚本不起作用,
当用户在A页面使用后退按钮回到前一个页面B页面时此脚本执行将执行使前进回A页面从而使用户无法后退

或者跳转时使用window.location.replace("http://www.w3school.com.cn")
replace() 方法不会在 History 对象中生成一个新的纪录。当使用该方法时,新的 URL 将覆盖 History 对象中的当前纪录。

猜你喜欢

转载自seahb.iteye.com/blog/1342305