Обмен данными сеанса между 2 поддоменами - PullRequest
5 голосов
/ 27 января 2011

Я использую Tomcat 7.0.6 с JDK 1.6.0_22

Можно ли совместно использовать данные сеанса между двумя разными доменами с общим поддоменом, таким как a.mydomain.com и b.mydomain.com?

При использовании java-сервлета по умолчанию a.mydomain.com и b.mydomain.com получают разные сеансы, но невозможно создать общий сеанс для всех поддоменов в mydomain.com?

Проблема также в том, что я не контролирую напрямую субдомен commen (mydomain.com), поэтому не могу обслуживать никакие сервлеты с mydomain.com

Ответы [ 3 ]

14 голосов
/ 27 января 2011

Установите атрибут sessionCookieDomain элемента <Context> рассматриваемого веб-приложения на .mydomain.com (обратите внимание на начальную точку, это очень важно).Это позволит веб-браузеру обмениваться файлами cookie между всеми поддоменами.

Если у вас на самом деле есть несколько контекстов веб-приложений и вы хотите разделить сеанс между ними, то вам также необходимо установить атрибут sessionCookiePath для <Context> элемент рассматриваемых веб-приложений /.

В двух словах:

<Context sessionCookieDomain=".mydomain.com" sessionCookiePath="/">

См. также:


Для пользователей Tomcat 6: обратите внимание, что это было введено в Tomcat 6.0.27.Для тех, кто не может выполнить обновление, вам потребуется Valve для изменения домена cookie, в конечном итоге в сочетании с атрибутом emptySessionPath в элементе <Connector> в /conf/server.xml для случая, когда у вас есть несколько контекстов веб-приложения, для которыхВы хотите поделиться сессией.

3 голосов
/ 27 января 2011

Servlet Spec 3.0 (что поддерживает Tomcat 7) позволяет это вызывать setDomain в SessionCookieConfig.

Подробности здесь: http://download.oracle.com/javaee/6/api/javax/servlet/SessionCookieConfig.html

Вы получаете SessionCookieConfig программно во время запуска веб-приложения с ServletContextListner - или вы должны иметь возможность установить его значение в web.xml.

0 голосов
/ 27 января 2011

Вы можете создать свою собственную реализацию сеанса, используя куки. Сеансы обрабатываются (в большинстве языков на стороне сервера) с использованием файлов cookie и базы данных или файлов на стороне сервера. Вы создаете токен (используя md5 для отметки времени) и сохраняете его в файл или базу данных вместе со всеми переменными сеанса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...