重新发送POST数据

时间:2014-03-29 09:25:00

标签: html http http-post

我有2个关于浏览器行为的问题。

  1. 当我们使用浏览器的刷新按钮或F5键重新发送表单时,为什么浏览器会在不希望这样的行为时再次发送帖子数据(再次添加到同一产品中)即)?

  2. 为什么我点击后仍然会发送帖子数据" 清除您最近的历史记录"在FireFox?

3 个答案:

答案 0 :(得分:4)

  

为什么当我们重新发送使用浏览器的刷新按钮或F5键时,浏览器会再次发送帖子数据,而这种行为是不可取的(再加入购物车相同的产品,即。)

因为浏览器不知道它是不受欢迎的。它被要求重复上一个请求,所以它会这样做。

  

为什么在我点击FireFox中的“清除您最近的历史记录”后F5之后仍然会发送帖子数据?

因为请求页面的详细信息存储在与当前页面关联的某些数据结构中以及历史记录中。


如果您不想刷新页面以重复POST请求,请使用POST-Redirect-GET pattern

使用302重定向响应POST请求。浏览器将向您重定向到的URL发出GET请求。重复该请求将重复GET请求,而不是POST请求。

答案 1 :(得分:1)

在您发出POST请求后,浏览器会将该信息保存在内存中,以防您在刷新页面时再次发送该信息。在您的情况下,您来自POST请求,因此浏览器会询问您是否要再次发送POST数据,而您无法避免这种情况。

为避免这种情况,您可以将表单操作添加到其他页面并处理其中的所有数据。

或者您可以在同一页面上处理数据,并在处理完所有数据后重定向到新页面。

希望这会有所帮助..

答案 2 :(得分:0)

我认为这可以回答这两个问题:

http://en.wikipedia.org/wiki/Post/Redirect/Get