gpt4 book ai didi

java - SendRedirect "preventing resubmission"保证?

转载 作者:行者123 更新时间:2023-12-03 20:29:27 27 4
gpt4 key购买 nike

您好,我是服务器端编程 (java) 的新手,正在阅读 SendRedirect 与 Forward 之间的区别。来自 Post-redirect-get pattern它解释说这将阻止通过点击刷新按钮重新提交修改。但是,如果服务器端后处理很繁重,并且在服务器处理帖子期间以及在发回 3xx 重定向之前,用户刷新页面怎么办?服务器如何知道连续忽略第二个传入请求?

最佳答案

我明白你的意思,事实上 PRG 保证防止双重 POST 提交,包括后退按钮只有在先前的重定向完成后,所以浏览器现在可以发送 GET 请求。

But what happens if a long process is running before making that redirect??

我有两种已知的方法来处理这种情况:

  • 如果您在重定向之前有很长的过程要做,那么 PGR 目标将无法满足是合乎逻辑的;所以如果有人遇到这种麻烦,then long-time process should be consider to run in separate thread然后您可以简单地将您的重定向发送到一个页面,您可以在其中向用户显示进度(可选),这类似于 Ajax。

  • 这个我没试过,但它真的合乎逻辑 Synchronization Token pattern ,所以它基本上是基于在你的页面中设置一个隐藏的 token ,然后当一个 POST 请求被发送到服务器时,你将增加该 token 和 store it into session 的任意数字。 ,所以下次用户单击提交按钮或刷新页面时,您可以 compare the token每次您的页面出现存储在 session 中的页面时都会得到解决,这是一种替代方法,您可以避免反复处理与同一用户关联的相同请求。

如果你想查看更多信息,我给你这个链接http://www.deepakgaikwad.net/index.php/2009/03/19/post-redirect-get-design-pattern.html

希望有用...

关于java - SendRedirect "preventing resubmission"保证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15915217/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com