window.open () очищает сессию - PullRequest
       15

window.open () очищает сессию

0 голосов
/ 11 октября 2009

В моем приложении несколько портлетов. Если я открываю URL с помощью метода window.open (), идентификатор сеанса изменяется и вызывает ошибку в других портлетах. Если я не открываю этот URL, все работает нормально. Но как только открывается это новое окно, сеанс очищается, а остальные портлеты выдают исключение, так как некоторые значения отсутствуют. В адресной строке браузера я набрал в javascript: alert (document.cookie); чтобы увидеть JSESSIONID. Он остается постоянным на всей странице и изменяется, когда я нажимаю на ссылку, которая запускает новый URL в новом окне. Я использовал IE8.

Будем весьма благодарны за любые предложения по поддержанию состояния сеанса в IE.

1 Ответ

0 голосов
/ 09 ноября 2009

Какой URL вы передаете window.open ()? Простой способ заставить IE 8 поддерживать JSESSIONID во всплывающем окне - это использовать относительный URL в вызове window.open () в разметке портлета. Критическим моментом является то, что доменное имя остается точно таким же. Вот пример кнопки с window.open () в событии onclick:

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

Я использую Websphere Portal, поэтому «/ wps / portal» просто ссылается на домашнюю страницу.

Кроме того, что вы намереваетесь стать целью всплывающего окна? Другая страница портала с тем же сеансом?

Обновление: учитывая, что целью window.open () является независимое веб-приложение, размещенное в том же домене ...

Сервер портала и сервер приложений, на котором размещено веб-приложение, имеют независимые сеансы, но по умолчанию они оба используют файл cookie с именем JSESSIONID. При первом обращении к веб-приложению сервер приложений перезаписывает файл cookie портала, в результате чего каждый последующий запрос к порталу имеет неправильный идентификатор сеанса. Когда это случилось со мной, я решил сконфигурировать портал, чтобы он называл свой сеансовый файл cookie как-то иначе (например, PORTALSESSIONID), чтобы эти два не конфликтовали.

...