web服务器有多个节点如何防止表单重复提交
我知道有通过js控制页面,还有利用Session生成唯一标识符,但是当web服务器有多个节点如何防止表单重复提交
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我知道有通过js控制页面,还有利用Session生成唯一标识符,但是当web服务器有多个节点如何防止表单重复提交
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(4)
推荐您看下说说API的防重放机制
目前我们公司就是用的这个机制。
在springmvc配置文件中加入拦截器的配置,当转到页面的请求到来时,生成token的名字和token值,一份放到redis缓存中,一份放传给页面表单的隐藏域。
当表单请求提交时,拦截器得到参数中的tokenName和token,然后到缓存中去取token值,如果能匹配上,请求就通过,不能匹配上就不通过。这里的tokenName生成时也是随机的,每次请求都不一样。而从缓存中取token值时,会立即将其删除(删与读是原子的,无线程安全问题)。
看下这个 蘑菇街防重复请求处理的实践与总结 链接描述
一次form请求只能去一个web节点就可以了