我有关于浏览器行为的以下2个问题。重新发送POST数据
当我们重新发送使用浏览器的刷新按钮或F5键形式,为什么浏览器再次发送POST数据时,这样的行为是不可取的(即再添加到购物车相同的产品)?
为什么在FireFox中点击“清除最近的历史记录”后发送的数据仍然被发送?
我有关于浏览器行为的以下2个问题。重新发送POST数据
当我们重新发送使用浏览器的刷新按钮或F5键形式,为什么浏览器再次发送POST数据时,这样的行为是不可取的(即再添加到购物车相同的产品)?
为什么在FireFox中点击“清除最近的历史记录”后发送的数据仍然被发送?
你做一个POST请求后,浏览器保持在的情况下,内存中的信息,他们可以,如果你再次发送刷新页面。在你的情况下,你来自一个POST请求,所以浏览器会问你是否要再次发送POST数据,而你不能避免这种情况。
为了避免它,您可以将表单添加到不同页面的操作并处理其中的所有数据。
或者您可以在同一页面上处理数据,并在处理完所有数据后重定向到新页面。
希望这有助于..
我认为这是可以给出一个答案到两个问题:
为什么当我们重新发送使用浏览器的刷新按钮或F5键浏览器再次发送POST数据,同时这样的行为是不可取的(添加到购物车相同的产品再次,即)?
因为浏览器不知道这是不可取的。它被要求重复最后的请求,所以它会。
为什么在F5中我点击“清除最近的历史记录”后,发布的数据仍然在发送?
因为请求页面的详细信息存储在与当前页面相关的某个数据结构以及历史记录中。
如果你不想刷新页面重复一个POST请求,然后使用POST-Redirect-GET pattern。
使用302重定向响应POST请求。浏览器将对您重定向到的URL发出GET请求。重复该请求将重复GET请求,而不是POST请求。
提交重定向到其他页面后将阻止重新提交... – user1844933
在这种情况下使用ajax –