我目前遇到一個僅在當前版本的Safari(5.1.5)中出現的錯誤,並且想知道這裏的任何人是否可以爲其提供任何解決方法。我在5.1.2中測試過它,它在那裏工作得很好,我不確定5.1.3和5.1.4,因爲我沒有訪問這些版本。Safari在重定向後重新發送相同的表格
的錯誤需要三頁,我會告訴他們的來源,然後解釋正在發生的事情:
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"
發送。我不相信這個bug與.NET有任何關係,但我沒有一種簡單的方法來測試另一種語言來確保這一點。
事情我已經嘗試過:
- 把表單提交代碼的函數,然後調用那個。
- 需要Jquery並在$(document).ready()函數中調用它。
- 將函數調用放在setTimeout()中。
- 用我按下的按鈕代替功能。
- 複製處理程序並將第二個表單發送到副本。
這些方法中的每一個都具有相同的效果,即打印「失敗」而不是成功。
我將在Safari論壇上提交這個錯誤(我沒有Apple開發者帳戶,目前還沒有開發新的帳戶),但我希望有人能幫助我想出一個合適的解決此問題的方法,直到他們解決問題。
編輯:Safari的論壇錯誤報告:在我的狩獵論壇https://discussions.apple.com/thread/3921507