重定向页面是一个好的实践吗?

6

我记得在某个地方读到过,使用GET重定向页面以显示POST请求后的下一页是一个很好的做法。为什么呢?


这实际上是一个众所周知和常见的模式,称为Post/Redirect/Get(或类似的东西):http://en.wikipedia.org/wiki/Post/Redirect/Get。 - cic
5个回答

12
这样,如果用户重新加载页面,浏览器就不会发送另一个POST请求。
例如,如果页面是订单确认页面,如果用户刷新页面,您不希望订单被重复提交。

1

这是因为如果用户提交表单并进入感谢页面,然后刷新该页面,浏览器将提示用户重新提交表单,从而创建两个帖子到您的数据处理程序。如果您使用GET重定向到感谢页面,则post变量为空,因此不会重新提交表单。

我不确定它是否仍被认为是良好的实践-已经有一段时间没有听到关于这个主题的任何消息了。


0

GET 是幂等的,而 POST 不是。如果用户重新加载页面(或通过单击浏览器的“后退”按钮返回到该页面),则不会出现任何问题。


好的,至少应该是这样的。在 Web 服务器端没有任何要求;GET 可以破坏网站开发人员告诉它的任何内容。此外,现代浏览器会在重新加载 POST 页面之前提示用户,但不会在重新加载 GET 页面之前提示用户。 - Mike D.

-2
我认为这是为了使接下来的页面可收藏为书签。

我认为我的回答并不差 - 可以使用GET重定向后的书签功能是一个有效的理由。 GET将参数保留在查询字符串中,这使得动态页面的书签功能成为可能。被接受的答案(“避免重复发布”)并没有解释为什么要使用GET,它只是提倡不要重复发布。 - lo_fye

-4

如果你无法记住为什么这是一种良好的实践,那么可能没有一个很好的理由来证明它。

在我看来,这是一种得失平衡的情况 - 当然可以轻松地争论相反的观点 - 它是否是一种良好的实践,实际上取决于它如何与您代码的其他部分结合。

C.


他在询问为什么这是一个好的实践方法,所以用“你不知道,就不要做”来回答他并不是一个好的答案。 - John M.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接