怎样让用户点击浏览器后退按钮刷新后退页面的验证码

介绍

项目需要,怎样让用户点击浏览器后退按钮刷新后退页面的验证码,通过cookie来解决

方法一(通过设置前台html)(失败)

本想通过控制html的http-equiv属性来解决问题,如下

http-equiv属性 
1、<meta http-equiv="Content-Type" contect="text/html";charset=gb_2312-80"> 
和 <meta http-equiv="Content-Language" contect="zh-CN">用以说明主页制作所使用的文字以及语 

言;又如英文是ISO-8859-1字符集,还有BIG5、utf-8、shift-Jis、Euc、Koi8-2等字符集; 
2、<meta http-equiv="Refresh" contect="n;url=http://yourlink">定时让网页在指定的时间n内, 

跳转到页面http;//yourlink; 
3、<meta http-equiv="Expires" contect="Mon,12 May 2001 00:20:00 GMT">可以用于设定网页的到 

期时间,一旦过期则必须到服务器上重新调用。需要注意的是必须使用GMT时间格式; 
4、<meta http-equiv="Pragma" contect="no-cache">是用于设定禁止浏览器从本地机的缓存中调阅 

页面内容,设定后一旦离开网页就无法从Cache中再调出; 
5、<meta http-equiv="set-cookie" contect="Mon,12 May 2001 00:20:00 GMT">cookie设定,如果 

网页过期,存盘的cookie将被删除。需要注意的也是必须使用GMT时间格式; 
6、<meta http-equiv="Pics-label" contect="">网页等级评定,在IE的internet选项中有一项内容 

设置,可以防止浏览一些受限制的网站,而网站的限制级别就是通过meta属性来设置的; 
7、<meta http-equiv="windows-Target" contect="_top">强制页面在当前窗口中以独立页面显示, 

可以防止自己的网页被别人当作一个frame页调用; 
8、<meta http-equiv="Page-Enter" contect="revealTrans(duration=10,transtion= 50)">和< 

meta http-equiv="Page-Exit" contect="revealTrans(duration=20,transtion =6)">设定进入和离 

开页面时的特殊效果,这个功能即FrontPage中的“格式/网页过渡”,不过所加的页面不能够是一个frame页面。

<meta http-equiv="Expires" content="0">
<meta http-equiv="Cache-Control" content="no-cache">
<meta http-equiv="Pragma" content="no-cache"> 

方法二(通过设置后台controller)(失败)

本想通过控制response的setHeader方法来解决问题,如下
复制代码

@RequestMapping(value = "login", method = RequestMethod.GET)
public String login(HttpServletRequest request,
                    HttpServletResponse response,
                    Model model) throws IOException {
    Object params = request.getSession().getAttribute("params");
    if (params != null) model.addAttribute("message", params);
    response.setHeader("Pragma", "No-cache");
    response.setHeader("Cache-Control","no-cache");
    response.setDateHeader("Expires", -10);
    return "login";
}

复制代码

结论:点击浏览器的后退按钮,压根就没再从后台返回新的数据,依旧从浏览器的缓冲中读取
方法三(通过前台javacript设置cookie)(成功)

目标页面 js login.js
复制代码

var Cookie = {
            // 设置Cookie
            setCookie: function(name, value, expires, path, domain){
                document.cookie = name + "=" + escape( value ) +
                    ( ( expires ) ? ";expires=" + expires.toGMTString() : "" ) +
                    ( ( path ) ? ";path=" + path : "" ) +
                    ( ( domain ) ? ";domain=" + domain : "" );
            },
            // 获取Cookie
            getCookie: function( name ){
                var arr = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)"));
                if(arr != null) return unescape(arr[2]); return null;
            },
            // 删除Cookie
            delCookie: function( name ){
                var d = new Date();
                d.setTime(d.getTime() - 3600 * 1000);
                this.setCookie(name, "", d);
            }
        }
console.log(Cookie.getCookie("a"));
if (Cookie.getCookie("a") != 1){
   Cookie.setCookie("a",1);
   console.log(Cookie.getCookie("a"));
   window.location.reload();
}

复制代码

目标页面下一页 js
复制代码

    var Cookie = {
        // 设置Cookie
        setCookie: function(name, value, expires, path, domain){
            document.cookie = name + "=" + escape( value ) +
                    ( ( expires ) ? ";expires=" + expires.toGMTString() : "" ) +
                    ( ( path ) ? ";path=" + path : "" ) +
                    ( ( domain ) ? ";domain=" + domain : "" );
        },
        // 获取Cookie
        getCookie: function( name ){
            var arr = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)"));
            if(arr != null) return unescape(arr[2]); return null;
        },
        // 删除Cookie
        delCookie: function( name ){
            var d = new Date();
            d.setTime(d.getTime() - 3600 * 1000);
            this.setCookie(name, "", d);
        }
    }
    Cookie.setCookie("a",2);

复制代码

总结:通过cookie跨页面保存变量的功能,判断同一变量在不同页面设置的值来达到区分的目的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值