2009-09-08 8 views
1

IE7에 한 가지 문제가 있습니다. 이 시나리오를 설명해 드리겠습니다IE7 문제 - 세션 및 쿠키 문제

일반 로그인 기능을 사용하여 TAB1의 IE7 브라우저에서 웹 기반 응용 프로그램을 열었습니다. 로그인 성공 후, 나는 응용 프로그램 홈 페이지에 입력하고 나는 정상적인 거래와 함께 할 Trans1 말한다. 이제 다시 동일한 탭에서 다른 탭 TAB2로 응용 프로그램을 열고 싶습니다. IE7이 로그인 페이지에서 내 응용 프로그램에 로그인하는 것을 허용하지 않습니다. 홈 페이지에 직접 들어가고 하나의 트랜잭션을 수행 할 때 "Trans2"라고 말하면 원활하게 진행됩니다. 이제 다시 TAB1에 가서 하나의 트랜잭션을 수행하면 TAB2에서 연 TAB2 페이지가 열립니다.

IE7이 여러 세션에서 동일한 세션 쿠키를 공유하고있는 것으로 보입니다. 동일한 시나리오에 대한 해결 방법이 있습니까?

누구든지이 문제를 해결할 수 있습니다.

이 점에 대해 도움을 요청하십시오.

감사합니다, Manoja 스와 로브

답변

0

예. IE는 탭간에 세션/쿠키를 공유합니다.

이전 버전의 IE 을 사용하여 새 브라우저를 실행하십시오 (예 : 시작 메뉴). IE7에서 작동합니다.

+0

새 브라우저를 실행 해보십시오. 내 애플리케이션이 이미 한 탭에서 열려 있는지 확인하는 방법. 그래서 나는 사용자가 새로운 창에서 내 애플리케이션을 열도록 강요 할 수있다. 또한, 나는 IE의 이전 버전에 대한 응용 프로그램을 만들 수 있습니다. 답장을 보내 주셔서 감사합니다. –

+0

죄송합니다. 웹 앱이 이미 다른 탭에서 열려 있는지 확인하는 방법을 모르겠습니다. 내 앱에서 그런 문제가 생겼을 때 방금 2ed 창을 열고 다른 사용자로 로그인하는 방법을 사용자에게 가르쳐주었습니다. 또한 - 새 브라우저 창을 열면 브라우저 창을 열어 세션을 상속합니다. 시작 메뉴에서 또는 IE 아이콘을 클릭하여 새 브라우저 창을 열어야합니다. –

+0

IE7의 두 가지 differnet 브라우저 창에서 응용 프로그램을 열 때 알려 주시면 문제가 없습니다. 응용 프로그램이 정상적으로 작동하고 있습니다. 문제는 동일한 브라우저 창에서 다른 탭을 견인하여 내 애플리케이션을 열 때만입니다. –

0

AFAIK 이는 모든 탭 브라우저 (예 : FF)에서 발생합니다.

+0

그러나 IE의 경우 새 브라우저 창은 세션을 상속하지 않지만 FF 세션은 항상 상속됩니다. –

0

실제로 모든 탭 브라우저가 작동하는 방식입니다. 쿠키는 모든 탭에서 공유됩니다. 그러나 동일한 응용 프로그램의 여러 인스턴스간에 공유되지는 않지만 이것이 도움이 될지는 의문입니다.

이것은 실제로 많은 응용 프로그램에서 심각한 문제입니다. 열려있는 탭, 닫힌 탭, 새 탭이 열릴 때 및 기존 탭이 요청할 때 탭을 추적하는 것은 매우 어렵습니다.

내가 발견 한 해결 방법이 하나 있지만 꽤 어설픈 프로그램입니다. 아이디어는 모든 탭에 고유 한 ID를 직접 할당해야한다는 것입니다. 그런 다음 탭에서 일부 작업을 수행하면이 ID를 서버에 다시 게시해야합니다. 응용 프로그램의 아키텍처에 따라 URL 또는 숨겨진 양식 필드에서 ID를 전달할 수 있습니다. AJAX를 사용하면 ID를 추가 할 수있는 일반적인 장소를 쉽게 찾을 수 있습니다. ASP.NET에는 항상 한 가지 형식 만 있으므로 숨겨진 필드는 쉽게 수행 할 수 있습니다.

당연히 서버 측에서이 ID를 확인하고이를 기반으로 자신 만의 "탭 세션"을 구현해야합니다.

2

IE7이 여러 탭에서 동일한 세션 쿠키를 공유하고있는 것으로 보입니다. 동일한 시나리오에 대한 해결 방법이 있습니까?

글쎄요. 쿠키는 여러 탭 또는 여러 창에서 동일한 브라우저의 모든 인스턴스간에 공유됩니다. IE의 인스턴스와 Firefox의 인스턴스와 같은 다른 브라우저를 사용하여 두 개의 개별 세션 만 얻을 수 있습니다.

IE8에서는 조금 바뀌었지만, 상당히 복잡한 방식으로 의존하고 싶지는 않을 것입니다. http://blogs.msdn.com/ie/archive/2009/05/06/session-cookies-sessionstorage-and-ie8.aspx

일반적으로 부분 완료 트랜잭션을 추적하는 데 쿠키/세션을 사용하지 않아야합니다. 하나의 거래가 항상 다른 거래를 방해합니다.에 하나 더 나은 : 페이지/폼 데이터의 모든 불완전한 트랜잭션 데이터의

  • 킵 트랙, 숨겨진 필드와 같은 그 기억되고 트랜잭션에 대한 ID를 생성, 앞뒤로 통과 유지하기 위해 너무 많은 데이터가 있다면
  • 페이지 데이터를 통해 저장하고 실제 데이터를 데이터베이스에 저장합니다.

페이지에 연결된 고유 한 ID를 사용하여보다 고유 한 쿠키 이름을 생성 할 수도 있습니다 (예 : `preference = foo '대신`preference.1234 = foo'를 써야 각 인스턴스가 자체 쿠키를 가질 수 있습니다.