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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

java 防止url重复请求_Web项目如何防止客户端重复发送请求

發布時間:2023/12/20 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 防止url重复请求_Web项目如何防止客户端重复发送请求 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在Web項目中,有一些請求或操作會對數據產生影響(比如新增、刪除、更新),針對這類請求一般都需要做一些保護,以防止用戶有意或無意的重復發起這樣的請求導致的數據錯亂。

本文總結了一些防止客戶端重復發送請求的方法。

方法一:JS監聽Form的onsubmit事件

在經典場景下,瀏覽器通過Form發送請求。因此只需要在Form onsubmit時將Submit按鈕disable,就能夠防止用戶雙擊導致的重復請求(這種問題一般發生在年紀大的用戶身上,他們分不清單擊和雙擊)。

但是隨著前端的發展,Form以外的請求方式也越來越多,比如利用各種前端框架(Vue、AngularJs、Backbone等)寫的App,他們更多的采用的是ajax的方式和后端交互。那么前端開發人員必須在開發時針對每個代表發起請求的UI元素做處理,像Form一樣,在發起請求的時候把相關UI元素禁用掉。

而有些交互方式則可能連代表發起請求的UI元素都沒有,比如Segmentfault的markdown編輯器就是在一邊輸入的時候一邊保存的。那么這時就需要前端代碼采用其他手段來控制重復請求的發生。

優點:

不需要后端寫代碼

缺點:

不存在統一的解決方案,必須針對每種情況寫處理代碼

無法控制瀏覽器刷新發起的重復請求

前端開發人員忘記寫相關代碼

無法控制惡意的重復請求,比如繞過瀏覽器直接發起

方法二:Http Status Code 302(后端重定向)

服務端采用重定向的方式,防止用戶刷新瀏覽器發出重復請求。這是比較經典的后端控制重復請求的方式,因為一旦重定向成功后,用戶刷新瀏覽器所刷新的是那個重定向地址,而不是數據操作地址。

優點:

不需要寫前端代碼

缺點:

在還未響應302之前,所發起的重復請求,比如:用戶快速的雙擊、刷新瀏覽器

在某些前端程序里(比如SPA),不能使用重定向

后端開發人員忘記寫相關代碼

無法控制惡意的重復請求,比如繞過瀏覽器直接發起

方法三:結合方法一和方法二

結合方法一和方法二的話倒是可以解決大部分問題,但是解決不了以下問題:

在還未響應302之前,用戶刷新瀏覽器導致的重復請求

有些場景下壓根不能使用重定向

前、后端開發人員忘記寫相關代碼

無法控制惡意的重復請求,比如繞過瀏覽器直接發起

方法四:token方式

token的流程是這樣的:

在瀏覽器發送請求前,先到服務端索要token

瀏覽器發送請求時,將token一并提交

服務端檢查請求是否攜帶token、token是否有效(比如是否正確、是否過期)。如果不正確則響應失敗;如果正確則銷毀token,繼續業務邏輯。

關鍵點在于:

每個token都是一次性且有過期時間的,能夠防止token前端代碼bug造成的重復利用和無限利用。

服務器要求請求必須攜帶token,能夠避免前端開發人員漏寫相關代碼。

那么token是以怎樣的形式傳輸的呢?我認為有以下兩種方式:

Cookie:

推薦使用這種方式,因為瀏覽器每次都會將cookie攜帶在請求里一并發出,所以前端發送請求的代碼都不需要修改,只要在發送請求前問服務器拿token就行了。

比如在進入Form頁面時,服務器將token以cookie的形式一并攜帶在響應中,那么前端Form提交時,就會將cookie一并攜帶在請求中,前端的代碼一點都不需要修改。

json:

前端發起ajax請求像后端拿token,后端以json的形式返回token,前端發送請求時將token攜帶在請求中,后端檢驗。

這種方式比Cookie稍微麻煩的地方是,前端必須寫一些代碼來保存這個token,然后在發送請求的地方要寫一些代碼把token攜帶在請求里。

優點:

前端代碼可以寫的少一些,比如禁用UI元素的代碼可以不寫

能夠解決在還未響應302之前,用戶刷新瀏覽器導致的重復請求

適應有些場景下壓根不能使用重定向

缺點:

前、后端開發人員忘記寫相關代碼。這個真的解決不了。

無法控制通過腳本運行的,具有整套流程的惡意請求。這種請求在程序看來完全合法,但卻屬于惡意行為,針對這類惡意行為的防控屬于另一個話題,本人不懂,所以在這里就不多講了。

方法五:利用數據庫的唯一約束

如果請求會insert數據,而這個數據正好存在業務主鍵,那么可以利用數據庫的唯一約束來做進一步的防御。

方法六:請求冪等化

有些業務情形下,請求是冪等的,這就意味著可以不用為重復發生請求而煩惱了——至少在業務邏輯層面不用煩惱了。

總結

以上是生活随笔為你收集整理的java 防止url重复请求_Web项目如何防止客户端重复发送请求的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 免费在线视频观看 | 我要色综合天天 | 久久亚洲av永久无码精品 | 麻豆观看| 欧美日韩国产在线播放 | 夜夜福利 | 欧美sese| 久久久久成人网站 | 丰满人妻一区二区三区53视频 | 久久极品| 91中文字日产乱幕4区 | 国产精品欧美一区二区 | 欧美激情精品久久久久久蜜臀 | 亚洲一区精品在线 | 高h1v| 日韩在线一区二区三区四区 | 国产精品资源站 | 亚洲一区二区三区高清视频 | 91九色在线视频 | 精品三级国产 | 亚洲91在线| 日本少妇bbb | 九九久久免费视频 | 伊伊成人 | 欧美影视一区二区三区 | av一级网站| 亚洲AV无码乱码国产精品色欲 | 97av视频在线| 日韩射| 5级黄色片| 2022天天操| 三级在线视频 | 久久精品国产亚洲AV高清综合 | 开元在线观看视频国语 | 成人无码久久久久毛片 | 夜夜夜撸 | 玖草视频在线观看 | 1区2区3区视频 | 日日日干干干 | 欧美xxxxx视频 | 九九热这里都是精品 | 日韩理论片在线观看 | 欧美黄色片免费看 | 国产精品永久在线观看 | av一区二区三区在线 | 日本人体视频 | 欧美日韩激情在线一区二区三区 | 欧美日本在线看 | 日韩视频在线观看免费 | 福利在线免费视频 | 最新日韩一区 | av网站在线播放 | 欧美熟妇一区二区 | zzjj国产精品一区二区 | 青青操视频在线播放 | 欧美日韩国产专区 | 五月婷婷狠狠爱 | 草草在线免费视频 | 亚洲一卡二卡在线 | 可以在线观看的av网站 | 亚洲免费中文 | 亚洲成人激情小说 | 国产亚洲一区二区三区四区 | 国产污视频在线观看 | 东方成人av | 久久性精品 | 天天干夜夜爱 | 日本aⅴ在线| 亚洲一区二区三区久久久成人动漫 | 日韩不卡视频一区二区 | 无码免费一区二区三区免费播放 | 97播播 | 欧美激情一区二区三区蜜桃视频 | 亚洲国产精品二区 | 涩涩涩涩涩涩涩涩涩涩 | 爱看av| 久久依人网 | 亚洲综合一区在线 | 久久97精品久久久久久久不卡 | 国产网站在线免费观看 | 亚洲av中文无码乱人伦在线视色 | 无码人妻丰满熟妇区96 | 免费的黄色片 | av无码精品一区二区三区宅噜噜 | 岛国av电影在线观看 | 中文字幕99| 琪琪秋霞午夜被窝电影网 | www五月天com | 亚洲综合图区 | 国产美女一区二区三区 | 色天堂在线视频 | 黄色欧美一级片 | 伊人影音| 99产精品成人啪免费网站 | 歪歪视频在线观看 | 久久久久久久偷拍 | 日韩一级色 | 冲田杏梨在线 | 免费看污黄网站在线观看 |