说说实际项目中如何防止重复提交

一般情况下,我们是允许点击浏览器的刷新按钮或者点击页面右键选择刷新的,不然微软做这个功能干啥,但在某些情况下可能这种刷新就会引发不少问题,原因就在于浏览器会缓存客户端最后一次的提交请求,比如我们发布一片帖子,在发布成功页面选择刷新,如果没有做任何处理的情况下,会重复提交一片新的帖子,防止这种问题的方法在我们项目里一般是这样做的

 

1.在进入提交页面时生成一个时间戳,将该时间戳赋值到一个隐藏域中

2.在请求提交到服务器时,服务器获取客户端提交的这个隐藏域time1,并从session中请求session中保存的前一个请求的时间戳time2,如果两个时间戳都不是空并且相等则说明本次请求为重复提交,抛出错误,否则将本次请求的时间戳更新到session的time2中,用于下次做重复提交判断

 

这样的话无论如何刷新页面,浏览器缓存的时间戳域永远是初次进入提交页面时生成的时间戳

这种方式也可以避免在提交页面连续点击按钮提交请求发生重复提交的问题

你可能感兴趣的:(session,浏览器,服务器,微软)