POST请求应该呈现HTML还是重定向?

时间:2012-08-28 01:12:24

标签: http post

POST请求应该呈现HTML还是重定向?

我讨厌你在页面上刷新并让浏览器告诉你,你将再次发布数据。

2 个答案:

答案 0 :(得分:5)

是的,redirect after POST最好避免这种情况。

答案 1 :(得分:5)

是。它应该发送一个实体或重定向!

(对不起,有时会出现旧的编程笑话)。

这实际上取决于你是否能够有意义地为GET提供一些东西,这是有道理的站在它自己。

示例:我买东西,我得到一个页面上写着“谢谢你,yadda yadda订单号,收据,yadda”。

那应该是303看到其他重定向,以便我获取包含该信息的页面。我可以为它添加书签,刷新只需刷新GET。快乐的日子。

有时候,只有渲染立即响应才会有意义,如果它们刷新,那么重复实际操作,书签就没有意义了。这不应该是重定向。

在大多数情况下,无论如何都要尽可能少。如果你必须将它们返回到表单是非常有用的,因为有些东西失败了 - 没有人想要一个失败表单的书签,他们想要修复需要修复的东西并继续使用它。

注意,许多服务器端系统(ASP等)在从POST重定向时使用302,这严格意味着它会再次POST,但几乎没有浏览器。相反,要更清楚:

  1. 如果你想再次重定向POST,那么POST会转到另一个URI - 好吧,不会有其他问题 - 但如果你真的需要,那么307
  2. 如果您想通过GET跟进一个解释结果的POST,那么303.它明确地表示“现在做一个GET”。