为什么发送post请求后需要重定向?

问题描述 投票:0回答:3

页面上有 3 个用于更新数据的表格:第一个用于用户个人资料,第二个用于重置密码,第三个用于更改电子邮件。我将表单发送到控制器并重定向到同一页面。项目组负责人要求删除这些重定向,并表示人们在提交表单后不会刷新页面,重定向只会加载服务器...... 我可能是错的,但重定向总是应该在发送 POST 请求后完成。我关于通过 AJAX 制作所有表单的建议被拒绝了。如果我没记错的话,我怎样才能有能力证明需要重定向呢?

php forms symfony
3个回答
10
投票

您正在寻找的点是 Post-Redirect-Get 模式。以下文章可能有助于理解这种模式:

它暴露了所有的动机。简而言之,该模式可以防止重复提交(因为页面速度很慢,因此用户失去耐心),并允许浏览器安全地刷新(最后一个)页面,而无需冒重新提交数据的风险(或者至少有这样的风险)弹出窗口警告您正在重新提交数据)。


2
投票

需要在提交表单后重定向,我认为您现在应该这样做:

  1. 您提交表格
  2. 将详细信息保存在数据库中
  3. 从控制器返回视图。

在上述情况下会有一个问题,当提交表单并且您将普通视图返回给用户而不重定向页面时,并且在视图用户尝试刷新页面时,他将收到以下警告消息。

您正在查找的页面使用了您输入的信息。 返回该页面可能会导致您重复执行的任何操作。 你想继续吗

这意味着浏览器将再次发送先前请求中已处理过的数据,因此服务器端处理的数据可能会存在一些歧义。

这可能是在提交和处理表单后立即重定向页面的原因。


2
投票

重定向仅用于清除所有发布数据。如果您选择不重定向,用户在使用后退或前进按钮时可能会遇到一些不便。他将被要求再次发送帖子数据。

© www.soinside.com 2019 - 2024. All rights reserved.