JSF - принудительное использование JSESSIONID в URL для iFrame без поддержки сторонних файлов cookie - PullRequest
0 голосов
/ 16 июля 2010

Привет всем! Я работаю над приложением JAVA / JSF, которое работает в iFrame. Клиент аутентифицируется за пределами iFrame, затем перенаправляет обратно на страницу, которая содержит приложение внутри iFrame. Если у клиента отключены сторонние файлы cookie, iFrame не сможет получить доступ к cookie и никогда не увидит jsessionid.

Я хотел бы проверить наличие cookie в приложении и, если он не найден, перенаправить с помощью JS на текущую страницу, добавив в конце jsessionid. Я попробовал это с

;jsessionid=#{session.getId()}

Который выглядел хорошо ... но никогда не поддерживал бы текущий сеанс. Затем я добавил

<h:form><h:commandButton/></h:form>

на страницу, отключил куки, просмотрел страницу в браузере и увидел, что jsessionid, указанный в форме, отличается от того, который предоставляется session.getId ().

У меня такой вопрос ... как я могу получить правильный jsessionid, который будет частью формы?

Спасибо! Мейсон

- Update-- Я должен упомянуть, что это на том же домене, веб-сервере и приложении. an и # {session.getId ()} на одной и той же странице будут одновременно возвращать другой jsessionid.

1 Ответ

0 голосов
/ 16 июля 2010

Сеансы по умолчанию привязаны к домену и контексту. Ваша проблема указывает на то, что страница, которую обслуживает iframe, работает в другом домене и / или контексте.

Если страница в iframe запускается в другом домене, вам нужно написать «локальный» сервлет, который действует как прокси с помощью java.net.URLConnection или Apache HttpClient и пусть iframe ссылается на это.

Если страница в iframe запускается в том же домене, но в другом контексте (и работает на том же веб-сервере), вам необходимо настроить сервер для совместного использования одного и того же сеанса между всеми запущенными веб-приложениями. Как это сделать, зависит от сервера. Если это Tomcat или клон / форк, то проверьте атрибут emptySessionPath HTTP-соединителя .

...