二者在原理上都是经过session token来实现的。当客户端请求页面时,服务器会生成一个随机数Token,而且将Token放置到session当中,而后将Token发给客户端(通常经过构造hidden表单)。
下次客户端提交请求时,Token会随着表单一块儿提交到服务器端。html
服务器端会对Token值进行验证,判断是否和session中的Token值相等,若相等,则能够证实请求有效,不是伪造的。json
服务器端第一次验证相同事后,会将session中的Token值更新下,若用户重复提交,第二次的验证判断将失败,由于用户提交的表单中的Token没变,但服务器端session中Token已经改变了。服务器
//打印小票 $(document).on("click", ".printBtn", function() { var recordId=$(this).parents("tr").attr("data-id"); $.commonAjax({ type : 'post', url : printUrl, data : {diaryId:recordId}, success : function(re) { //打印小票 Main.printTicket(re.ticket); }, error : function(msg, status) { //异步提交,刷新token,保证重复提交验证功能正常 $.get(refreshTokenUrl, { r : Math.random() }, function(resData) { $('#formToken').val(resData.data); if(msg!='RESUBMIT_ERROR'){popWin.alert(msg);} }, 'json'); } }); });
参考:session
linkdom