2009-10-11 5 views
0

내 응용 프로그램에 여러 포틀릿이 있습니다. window.open() 메서드를 사용하여 URL을 열면 세션 ID가 변경되고 다른 포틀릿에서 오류가 발생합니다. 이 URL을 열지 않으면 모든 것이 정상적으로 작동합니다. 그러나 일단이 새 창이 열리면 세션이 지워지고 일부 값이 없기 때문에 나머지 포틀릿에서 예외가 발생합니다. 브라우저의 주소 표시 줄에 javascript : alert (document.cookie); JSESSIONID를 볼 수 있습니다. 페이지 전체에서 일정하게 유지되며 새 창에서 새 URL을 시작하는 링크를 클릭하면 변경됩니다. 나는 IE8을 사용했다.window.open() 세션을 지움

IE에서 세션 상태를 유지하기위한 제안은 크게 감사하겠습니다.

답변

0

window.open()에 전달할 URL은 무엇입니까? IE 8이 팝업에서 JSESSIONID를 유지하도록하는 쉬운 방법은 상대 URL을 사용하여 포틀릿 마크 업에서 window.open()을 호출하는 것입니다. 중요한 것은 도메인 이름이 정확히 동일하다는 것입니다.

<button onclick="javascript:window.open('/wps/portal')">Home Page</button> 

것은 내가 웹 스피어 포털을 사용하고 '/ WPS/포털이'바로 홈 페이지로 링크 그래서, 다음은 onclick 이벤트에서 window.open()와 버튼의 예입니다.

또한 팝업 창의 대상은 무엇입니까? 동일한 세션을 가진 다른 포털 페이지가 있습니까?

업데이트 : window.open의 대상() 같은 도메인에서 호스팅 독립적 인 웹 응용 프로그램입니다 점을 감안 ...

포털 서버와 웹 응용 프로그램을 호스팅하는 응용 프로그램 서버는 독립적 인 세션을 ,하지만 둘 다 기본적으로 JSESSIONID라는 쿠키를 사용합니다. 웹 응용 프로그램에 처음 액세스하면 응용 프로그램 서버는 포털의 쿠키를 덮어 쓰므로 이후의 모든 포털 요청에 잘못된 세션 ID가 발생합니다. 이런 일이 생겼을 때, 내 솔루션은 세션 쿠키의 이름을 다른 것으로 (예 : PORTALSESSIONID) 포털을 구성하여 두 가지가 충돌하지 않도록했습니다.

+0

응답 주셔서 감사합니다 ... 나는 완전한 URL을 매개 변수로 open() 메서드에 전달하지만 도메인 이름은 부모와 완전히 동일합니다. 나는 또한 당신의 제안을 시도 할 것이다. 대상이 포털 페이지가 아니지만 동일한 도메인에서 호스팅되는 다른 웹 응용 프로그램 (예 : 주 도메인이 example.com 인 경우 example.com/app/index.jsp를 엽니 다.) – jobinbasani

+0

이름 충돌이있을 수 있습니다. JSESSIONID 쿠키로 이 답변을 몇 가지 추가 정보로 업데이트했습니다. – cc1001