Safari在重定向后重新发送相同的表单

Safari在重定向后重新发送相同的表单,safari,Safari,我目前遇到了一个只在当前版本的Safari 5.1.5中出现的bug,我想知道这里是否有人能想出解决方法。我在5.1.2中测试了它,它在那里工作得很好,我不确定5.1.3和5.1.4的情况,因为我没有访问这些版本的权限 这个bug需要三页,我将显示它们的来源,然后解释发生了什么: FirstPageWithForm.htm 正如您所注意到的,两个表单具有相同的字段名,但其中一个字段具有不同的值。但是,在Safari中,当运行此代码时,值1234将作为differentitfield而不是5678

我目前遇到了一个只在当前版本的Safari 5.1.5中出现的bug,我想知道这里是否有人能想出解决方法。我在5.1.2中测试了它,它在那里工作得很好,我不确定5.1.3和5.1.4的情况,因为我没有访问这些版本的权限

这个bug需要三页,我将显示它们的来源,然后解释发生了什么:

FirstPageWithForm.htm

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

我已经尝试过的事情:

将表单提交代码放入函数中,然后调用该函数。 需要Jquery并在$document.ready函数中调用它。 将函数调用放入setTimeout。 用我按下的按钮替换该功能。 复制处理程序并将第二个表单发送到副本。 这些方法中的每一种都有相同的效果,即打印失败而不是成功。 我将在Safari论坛上提交这个bug。我没有苹果开发者帐户,目前也不打算创建一个新的帐户,但我希望有人能帮助我找到解决这个问题的合适方法,直到他们修复它


编辑:Safari论坛bug报告:

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

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

<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>
<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>
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");
}