鍍金池/ 問(wèn)答/Java  Linux/ web服務(wù)器有多個(gè)節(jié)點(diǎn)如何防止表單重復(fù)提交

web服務(wù)器有多個(gè)節(jié)點(diǎn)如何防止表單重復(fù)提交

我知道有通過(guò)js控制頁(yè)面,還有利用Session生成唯一標(biāo)識(shí)符,但是當(dāng)web服務(wù)器有多個(gè)節(jié)點(diǎn)如何防止表單重復(fù)提交

回答
編輯回答
臭榴蓮

一次form請(qǐng)求只能去一個(gè)web節(jié)點(diǎn)就可以了

2017年4月5日 11:24
編輯回答
冷溫柔

在springmvc配置文件中加入攔截器的配置,當(dāng)轉(zhuǎn)到頁(yè)面的請(qǐng)求到來(lái)時(shí),生成token的名字和token值,一份放到redis緩存中,一份放傳給頁(yè)面表單的隱藏域。
當(dāng)表單請(qǐng)求提交時(shí),攔截器得到參數(shù)中的tokenName和token,然后到緩存中去取token值,如果能匹配上,請(qǐng)求就通過(guò),不能匹配上就不通過(guò)。這里的tokenName生成時(shí)也是隨機(jī)的,每次請(qǐng)求都不一樣。而從緩存中取token值時(shí),會(huì)立即將其刪除(刪與讀是原子的,無(wú)線程安全問(wèn)題)。

2017年3月28日 16:55
編輯回答
淺淺

推薦您看下說(shuō)說(shuō)API的防重放機(jī)制

目前我們公司就是用的這個(gè)機(jī)制。

2018年6月1日 10:01
編輯回答
凹凸曼

看下這個(gè) 蘑菇街防重復(fù)請(qǐng)求處理的實(shí)踐與總結(jié) 鏈接描述

2017年11月19日 03:21