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

Tho*_*ggi 6 post http

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

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

Thi*_*ilo 5

是的,最好在POST后重定向以避免这种情况.


Jon*_*nna 5

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

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

这真的取决于你是否可以有意义地给予GET一些东西,这是有意义的站在它自己.

示例:我买东西,我得到一个页面说"谢谢你,yadda yadda订单号,收据,yadda".

那应该是303 See Other redirect,这样我就可以获得一个包含该信息的页面.我可以为它添加书签,刷新只需刷新GET.快乐的时光.

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

在大多数情况下,无论如何都要追求尽可能少的后者.虽然最重要的是你必须将它们返回到表单中,因为失败了 - 没有人想要一个失败表单的书签,他们想要修复需要修复的东西并继续使用它.

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

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