В предыдущем посте было рассказано, как выполнять межсерверные запросы Ajax, в частности к Tomcat. Для этого использовался небольшой скриптик на PHP, который перенаправлял запрос на удаленный сервер, получал и возвращал ответ. Настало время его немного доработать в связи с тем, что он не поддерживает сессии, т.е. каждый Ajax-запрос Tomcat воспринимает как совершенно новое соединение.На самом деле поддержка сессий реализуется достаточно просто. Все необходимое для поддержки сессий передается в заголовках HTTP-запросов/ответов.
Так, когда мы посылаем запрос Tomcat, он его обрабатывает и возвращает ответ, в котором присутствует заголовок типа Set-Cookie: Path=/; JSESSIONID=xxx, где xxx - идентификатор сессии.
Чтобы все последующие запросы относились к данной сессии, необходимо передавать полученный идентификатор сессии в заголовке запроса. Сделать это можно с помощью заголовка Cookie. К запросу добавляется пара заголовков Cookie: Path=/ и Cookie: JSESSIONID=xxx.
Т.е. алгоритм поддержки сессий следующий:
- При получении ответа от сервера, проверяем, есть ли там идентификатор сессии?
- Сохраняем идентификатор сессии, например, в переменной $_SESSION['SERVER_SESSION_ID'].
- При выполнении последующих запросов к этому серверу, добавляем заголовок с идентификатором сессии.
Легко и просто.
Leave a Reply
You must be logged in to post a comment.
