2012-05-21 1 views
0

게시 가져 오기 리디렉션 메서드를 사용하여 asp.net 웹 폼을 사용하여 양식을 제출합니다.ASP.NET 포스트 리디렉션 브라우저 기록 가져 오기 문제

Step 1) Post form on Page1.aspx 
Step 2) Process form and redirect using Response.Redirect to Page2.aspx 
Step 3) Page2.aspx redirects using Response.Redirect to Page3.aspx 

당신이 Page3.aspx에 있으며 다시 버튼을 누르면 경우, 나는 그것이 다시 Page2.aspx에 당신을 데려와 바로 다시 Page3.aspx로 리디렉션해야한다고 생각 : 그것은 매우 간단한 설치합니다. 이렇게하면 Page1.aspx로 돌아가서 데이터를 다시 제출할 기회가 줄어 듭니다.

대신에 뒤로 버튼을 눌렀을 때 Page1.aspx로 곧바로 이동합니다. 또한 303 리디렉션을 사용해 보았지만 작동하지 않았습니다.

여기에 무슨 일이 일어날 수 있습니까?

답변

0

당신이보고있는 행동은 옳은 행동입니다.

Google과 같은 일부 사이트의 실적을 뒷받침하는 다양한 브라우저가 이전 기록에서 즉시 리디렉션되는 페이지를 유지하지 못하도록합니다.

  1. 당신은이 링크는 실제로 즉시 실제 페이지로 전달하기 전에 google.coms 서버에 다시 연결되는 링크
  2. 에 google.com

  3. 당신은 클릭 검색 :

    이것이 고려하십시오.

  4. 올바른 링크가 아니라고 판단하고 뒤로 버튼을 클릭하십시오. 이 시점에서

는, 대부분의 브라우저는이 네티즌의 수백만의 일반적으로 바람직한 현상입니다 다시 2 단계에서 확인 된 페이지로 이동합니다.

3 단계로 돌아가려면 4 단계로 넘어가려면 일부 사람들을 싫어할 것입니다. IE의 특정 버전이 동작이 패치 될 때까지 최근에했습니다.

포인트는 예상되는 동작이 나머지 웹의 작동 방식입니다. 당신이 정말로 원한다면 이것을 바꿀 수있는 다른 방법을 찾아야합니다.

갱신


@NinjaBomb는 : 어떻게 든 난 당신의 후속 질문을 놓친, 그래서 다음은 아마 많이 사용하지 않습니다.

대답은 C# 코드에서 리디렉션을 수행하는 대신 페이지로드가 완료 될 때 리디렉션을 수행하는 Page2에 일부 javascript를 포함합니다. 그런 다음 브라우저는 2 페이지에 대한 참조를 "저장"합니다. 3에서 뒤로 버튼을 클릭하면 2로 돌아가서 3으로 리디렉션됩니다.

물론 뒤로 버튼을 두 번 누르기 만하면됩니다. .2의 리다이렉트를 중단시키고 그들에게 1을 보냅니다. 내가 생각할 수있는 유일한 다른 방법은 페이지 1을로드 할 때 세션이나 쿠키 값을 테스트하여 이미 전송되었는지 확인하는 것입니다. 그렇다면 페이지 1은 자체를 표시하는 대신 리디렉션을 수행해야합니다.

+0

그러면 문제는 다음과 같습니다. 브라우저에서 리디렉션되는 페이지를 기록에 유지하도록하려면 어떻게해야합니까? 제 경우에는 그것이 합리적이라고 생각합니다. – NinjaBomb