【无登陆】并不等于【分布式必是多Session(会话)】。即使没有登录,也可以给当前会话设置SessionId,从而后端通过共享Session的方式来唯一确定当前会话。 如果完全是前后端没有任何额外的数据(如cookie,特殊的tokenId等)的话,那么理论上是无法实现的。因为HTTP本身是无状态的,同时过来的两个请求,即使数据等等完全一致,你也不能确定是否是同一用户所提交。 还有一种方式,表单页打开时,后端生成一个uuid,并存储到一个数据共享(所有系统都可访问)中间件(如Redis)。然后表单提交时,附带该uuid,且uuid仅一次有效。这样也能在一定程度上达到无重复提交。如果是恶意重复提交的话,这种思路恐怕就不行了~
【无登陆】并不等于【分布式必是多Session(会话)】。即使没有登录,也可以给当前会话设置SessionId,从而后端通过共享Session的方式来唯一确定当前会话。
如果完全是前后端没有任何额外的数据(如cookie,特殊的tokenId等)的话,那么理论上是无法实现的。因为HTTP本身是无状态的,同时过来的两个请求,即使数据等等完全一致,你也不能确定是否是同一用户所提交。
还有一种方式,表单页打开时,后端生成一个uuid,并存储到一个数据共享(所有系统都可访问)中间件(如Redis)。然后表单提交时,附带该uuid,且uuid仅一次有效。这样也能在一定程度上达到无重复提交。如果是恶意重复提交的话,这种思路恐怕就不行了~