要能夠防止表單重複提交,
就要標識使用者的每一次訪問請求,使得每一次訪問對服務端來說都是唯一確定的
。為了標識使用者的每次訪問請求,可以在使用者請求乙個表單域時增加乙個隱藏表單項,這個表單項的值每次都是唯一的 token
,如:
<
formid=
」form」
method
=」post」
>
<
input
type
=hidden
name
=「crsf_token」
value
=「***x」/
>
form
>
當使用者在請求時生成這個唯一的 token 時,同時將這個 token 儲存在使用者的 session 中,等使用者提交請求時檢查這個 token 和當前的 session 中儲存的 token 是否一致。如果一致,說明沒有重複提交,否則使用者提交上來的 token 已經不是當前的這個請求的合法 token。其工作過程如圖 10-12 所示。
圖 10-12.工作過程
圖 10-12 是使用者發起對表單頁面的請求過程,生成唯一的 token 需要乙個演算法,最簡單的就是可以根據乙個種子作為 key 生成乙個隨機數,並儲存在 session 中,等下次使用者提交表單時做驗證。驗證表單的過程如圖 10-13 所示。
圖 10-13.驗證表單的過程
當使用者提交表單時會將請求時生成的 token 帶回來,這樣就可以和 session 中儲存的 token 做對比,從而確認這次表單驗證是否合法。
表單重複提交問題
表單重複提交 同一表單的內容多次重複提交到伺服器 比如插入資料時,同一表單多次提交,就會在資料庫中插入多條重複的該條記錄,造成嚴重的問題 表單重複提交分為三種情況 1.提交完表單以後,不做其他操作,直接重新整理頁面,表單會提交多次。這種情況產生的根本原因是,servlet處理完請求以後,直接 到目標...
表單重複提交
1.session token的方式 當表單載入時候,前端向伺服器申請乙個token,同時,伺服器將token放在session中。當提交表單時候,引數中帶著token,伺服器校驗token,如果相同則放行,同時清除session。如果不同,則說明重複提交。需要注意的是,如果請求返回了,或者重新整理...
防止表單重複提交
新增乙個使用者時,發現重複新增了4 5個,原來是重複提交了。怎麼解決這個問題呢,起初是在後端檢查新增的屬性是否已有,例如姓名和手機號是否重複,如果重複就不儲存,沒想到後來隨著業務的複雜化,新增乙個使用者所需時間越來越長,以致在檢查時還沒插入完畢。那就在提交時就關閉form,可是這樣一來,如果後端檢查...