具體的做法:在服務(wù)器端生成一個(gè)唯一的隨機(jī)標(biāo)識(shí)號(hào)林艘,專業(yè)術(shù)語(yǔ)稱為Token(令牌),同時(shí)在當(dāng)前用戶的Session域中保存這個(gè)Token审胚。然后將Token發(fā)送到客戶端的Form表單中吓揪,在Form表單中使用隱藏域來(lái)存儲(chǔ)這個(gè)Token包帚,表單提交的時(shí)候連同這個(gè)Token一起提交到服務(wù)器端镣典,然后在服務(wù)器端判斷客戶端提交上來(lái)的Token與服務(wù)器端生成的Token是否一致兔毙,如果不一致,那就是重復(fù)提交了兄春,此時(shí)服務(wù)器端就可以不處理重復(fù)提交的表單澎剥。如果相同則處理表單提交,處理完后清除當(dāng)前用戶的Session域中存儲(chǔ)的標(biāo)識(shí)號(hào)赶舆。
在下列情況下哑姚,服務(wù)器程序?qū)⒕芙^處理用戶提交的表單請(qǐng)求:
存儲(chǔ)Session域中的Token(令牌)與表單提交的Token(令牌)不同。
當(dāng)前用戶的Session中不存在Token(令牌)芜茵。
用戶提交的表單數(shù)據(jù)中沒(méi)有Token(令牌)叙量。