【问题标题】:Safari resends same form after redirectSafari 重定向后重新发送相同的表单
【发布时间】:2012-05-12 07:51:15
【问题描述】:

我目前遇到了一个仅在当前版本的 Safari (5.1.5) 中出现的错误,我想知道这里是否有人可以提出任何解决方法。我在 5.1.2 中对其进行了测试,它在那里运行良好,我不确定 5.1.3 和 5.1.4,因为我无权访问这些版本。

这个bug需要三页,我会展示它们的来源,然后解释是怎么回事:

FirstPageWithForm.htm

<form id="theForm" action="ActionHandler.ashx" method="post">
    <input type="hidden" name="differentField" value="1234"/>
    <input type="hidden" name="sameField" value="1111"/>
</form>

<script type="text/javascript">
    var theForm = document.getElementById("theForm");
    theForm.submit();
</script>

SecondPageWithForm.htm

<form id="theForm" action="ActionHandler.ashx" method="post">
    <input type="hidden" name="differentField" value="5678"/>
    <input type="hidden" name="sameField" value="1111"/>
</form>

<script type="text/javascript">
    var theForm = document.getElementById("theForm");
    theForm.submit();
</script>

ActionHandler.ashx

public void ProcessRequest(HttpContext context)
{
     var referrer = context.Request.UrlReferrer;
     var differentField = context.Request["differentField"];
     context.Response.Write(differentField);
     if (differentField == "1234")
     {
         if (referrer.ToString().Contains("Second"))
             context.Response.Write("Failure");
         else
         {
             context.Response.Redirect("SecondPageWithForm.htm");
         }
     }
     else
        context.Response.Write("Success");
}

如您所见,两个表单具有相同的字段名称,但其中一个字段具有不同的值。但是,在运行此代码时,在 Safari 中,值 "1234" 发送为 differentField 而不是 "5678"。我不相信这个错误与 .NET 有任何关系,但我没有一种简单的方法来测试另一种语言来确定这一点。

我已经尝试过的事情:

  • 将表单提交代码放入一个函数中,然后调用它。
  • 需要 Jquery 并在 $(document).ready() 函数中调用它。
  • 将函数调用放入 setTimeout()。
  • 用我按下的按钮替换功能。
  • 复制处理程序并将第二个表单发送到副本。

这些方法中的每一种都具有相同的效果,即打印“失败”而不是“成功”。
我将在 Safari 论坛上提交此错误(我没有 Apple 开发人员帐户,目前无法创建新帐户),但我希望有人可以帮助我想出一个合适的解决方法这个问题,直到他们解决它。

编辑:Safari 论坛错误报告:https://discussions.apple.com/thread/3921507

【问题讨论】:

    标签: safari


    【解决方案1】:

    我的 Safari 论坛上的 NicolasIgot 找到了解决我问题的方法。

    我刚刚在第二个表单的表单标签中添加了autocomplete="off",一切又开始工作了。我还没有在我的实际问题上尝试过,但它适用于我的简单测试用例,所以我对它有信心。

    【讨论】:

      猜你喜欢
      • 2014-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-19
      • 2019-08-03
      • 2013-10-11
      • 2020-06-20
      相关资源
      最近更新 更多