日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

后端怎么防止重复提交?(常用的做法)

發布時間:2023/11/28 生活经验 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 后端怎么防止重复提交?(常用的做法) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

后端怎么防止重復提交?(常用的做法)

客戶端的抖動,快速操作,網絡通信或者服務器響應慢,造成服務器重復處理。防止重復提交,除了從前端控制,后臺也需要控制。因為前端的限制不能解決徹底。接口實現,通常要求冪等性,保證多次重復提交只有一次有效。對于更新操作,達到冪等性很難。

常用后端防止重復提交方案

  • token

訪問請求到達服務器,服務器端生成token,分別保存在客戶端和服務器。提交請求到達服務器,服務器端校驗客戶端帶來的token與此時保存在服務器的token是否一致,如果一致,就繼續操作,刪除服務器的token。如果不一致,就不能繼續操作,即這個請求是重復請求。

  • 緩存

request進來,沒有就先存在緩存中,繼續操作業務,最后刪除緩存或者緩存設置生命周期。如果存在,就直接對request進行驗證,就不能繼續操作業務。

  • 索引

數據庫中創建唯一索引,記錄每次request請求。添加索引成功,就獲取鎖,繼續操作,最后設置索引失效。添加索引失敗,獲取鎖失敗,不能繼續操作。

  • Redis的計數器

Redis的計數器是原子操作,不存儲請求,又能提升QPS的峰值。每次request請求,若相同請求,計數器+1,否則新建id為key的計數器。如果>1,不能獲取鎖;如果=1,獲取鎖,操作,最后刪除計數器(刪除鎖)。

  • Post/Redirect/Get

提交(Post)后執行頁面重定向,成功后轉到提交成功頁面(Get),整個流程才算結束。當刷新頁面,或者瀏覽器前進和后退,都不會引起Post請求的重復提交。這里可以在head中設置control-cache,保存表單信息。這個方法依賴前端限制比較多。

總結

以上是生活随笔為你收集整理的后端怎么防止重复提交?(常用的做法)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。