현재 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"
값은 "5678"
대신 differentField
으로 전송됩니다. 이 버그가. NET과 아무 관련이 없다고 생각하지만 다른 언어를 테스트하는 쉬운 방법이 없습니다. 나는 이미 시도
것들 :
- 함수에서 양식 제출 코드를 퍼팅 후 해당 전화.
- Jquery가 필요하며 $ (document) .ready() 함수에서이를 호출해야합니다.
- 함수 호출을 setTimeout()에 넣습니다.
- 내가 누르는 버튼으로 기능 교체.
- 처리기를 복사하고 대신 두 번째 양식을 복사본에 보냅니다.
이러한 방법 중 하나 하나가 모두 성공 효과 대신 "실패"를 인쇄하는 것과 동일한 효과가있었습니다.
사파리 포럼에이 버그를 제출할 예정입니다. (Apple 개발자 계정이 없으며 현재는 새 계정을 만들지 않습니다.)하지만 누군가가 저를 도와 줄 수 있었으면 좋겠습니다. 문제를 해결할 때까지이 문제의 해결 방법.
편집 : 사파리 포럼 버그 리포트 : 내 사파리 포럼에서 https://discussions.apple.com/thread/3921507