7

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

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

4

2 回答 2

5

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

于 2012-08-28T01:18:25.310 回答
5

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

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

这真的取决于你是否可以有意义地给 GET 一些东西,这很有意义。

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

那应该是 303 See Other 重定向,以便我获取包含该信息的页面。我可以为它添加书签以备后用,刷新只会刷新 GET。快乐的时光。

但是有时,仅呈现立即响应才有意义,并且如果它们刷新,则重复实际操作,并且书签毫无意义。那不应该是重定向。

在大多数情况下,无论如何,尽量减少后者。如果您因为某些事情失败而必须将它们返回到表单中,这虽然最有用 - 没有人想要失败表单的书签,他们想要修复需要修复的内容并继续使用它。

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

  1. 如果你想再次重定向 POST,那么 POST 会转到不同的 URI - 好吧,那还有其他问题 - 但如果你真的必须这样做,那么 307
  2. 如果您想在 POST 之后使用 GET 来解释结果,即 303。它明确表示“现在执行 GET”。
于 2012-08-28T01:23:11.013 回答