Вопрос

Поскольку HTTP является протоколом без состояния, когда клиент выполняет несколько запросов к серверу, как сервер однозначно идентифицирует запросы конкретного клиента за определенный период времени, скажем, t1, t2, t3..

Я просмотрел веб-страницы и наткнулся на такие термины, как идентификатор сеанса, перезапись URL-адреса и файлы cookie.Но было бы здорово, если бы кто-нибудь объяснил это лучше.В частности, какая часть HTTP-запроса и ответа будет использоваться для отслеживания сеанса?

Это было полезно?

Решение

Как вы упомянули, распространенные способы реализации отслеживания HTTP-сеанса включают перезапись URL-адресов и файлы cookie.Отслеживание сеанса в основном требует, чтобы идентификатор сеанса сохранялся при нескольких запросах к серверу.Это означает, что каждый раз, когда данный клиент делает запрос к серверу, он передает один и тот же идентификатор сеанса.Сервер может использовать этот идентификатор для поиска информации о сеансе, которую он поддерживает.

При использовании файлов cookie сервер запрашивает клиента сохранить файл cookie, установив Set-Cookie Заголовок HTTP-ответа.Этот файл cookie содержит уникальный идентификатор сеанса, присвоенный этому клиенту - в данном примере строка 'ABAD1D':

    Set-Cookie: JSESSIONID=ABAD1D;path=/

Затем файл cookie отправляется обратно на сервер клиентом, использующим Cookie Заголовок HTTP-запроса для каждого запроса, и, таким образом, при каждом запросе серверу сообщается идентификатор сеанса, назначенный клиенту в данный момент.

    Cookie: JSESSIONID=ABAD1D

При использовании перезаписи URL-адреса этот же идентификатор сеанса вместо этого отправляется куда-нибудь в URL-адрес.Опять же, сервер извлекает идентификатор сеанса из URL-адреса, чтобы он мог выполнить поиск сеанса для конкретного клиента:

    http://my.app.com/index.jsp;JSESSIONID=ABAD1D

Однако сервер также должен убедиться, что все URL-адреса на веб-страницах, отправляемых обратно клиенту, также переписаны, чтобы содержать этот конкретный идентификатор сеанса клиента.Поскольку идентификатор сеанса закодирован в URL-адресах, этот метод отслеживания сеанса прозрачен для браузера.Часто сервер прибегает к перезаписи URL-адреса, если обнаруживает, что не может установить файл cookie сеанса на клиенте, подразумевая, что клиент не поддерживает / не разрешает файлы cookie.

Обратите внимание, что срок действия сеансов может истечь.Это означает, что если сервер не "видит" данный идентификатор сеанса в течение определенного периода времени, он может удалить данные сеанса для сохранения ресурсов.

Другие советы

Конкретно, какая часть HTTP запроса и ответа будет использоваться для отслеживания сеанса?

В HTTP-ответе сервер может установить файл cookie.Он делает это с помощью заголовка Set-Cookie.Например:

Set-Cookie: session=12345; path=/

Затем клиент возвращает значение всех файлов cookie, которые соответствуют свойствам, которые были установлены вместе с файлом cookie, которые могут включать путь (как указано выше) и домен, и срок действия которых еще не истек.

Файл cookie отправляется обратно на сервер как часть HTTP-заголовков.Например:

Cookie: session=12345

Никакая исходная информация о собственности не отправляется обратно вместе с файлом cookie.

Уникальный файл cookie позволяет серверу связать уникальный ключ с конкретным экземпляром браузера.Затем сервер может использовать этот ключ в качестве индекса в хэш-таблице или таблице базы данных, которая содержит уникальную информацию о состоянии каждого пользователя.

Отслеживание сеансов - это работа на стороне сервера.

Веб-сервер выдает некоторый идентификатор сеанса, который возвращается браузеру.Браузер отправляет этот идентификатор сеанса вместе с каждым запросом.

Вероятно, это делается с использованием файлов cookie прозрачно для пользователя.

обработка сеанса в большинстве случаев выполняется путем отправки печенье к клиенту.этот файл cookie будет отправляться обратно на сервер при каждом запросе от этого конкретного клиента.

В session id будут связаны с некоторыми ресурсами на стороне сервера (файл, пространство оперативной памяти), поэтому сервер, считывая session id в файле cookie можно найти этот ресурс, а затем узнать, каким клиентом он был.

Найдите достаточно подробностей здесь

HTTP - сеансы являются рекомендуемым подходом.Сеанс идентифицирует запросы, которые исходят из одного и того же браузера в течение периода общения.Все сервлеты могут совместно использовать один и тот же сеанс.Идентификатор JSESSION генерируется сервером и может быть передан клиенту с помощью файлов cookie, перезаписи URL-адреса (если файлы cookie отключены) или встроенного механизма SSL.Следует позаботиться о минимизации размера объектов, хранящихся в сеансе, а объекты, хранящиеся в сеансе, должны быть сериализуемыми.В Java- сервлете сеанс может быть получен следующим образом:

Сеанс HttpSession = request.getSession();//возвращает текущий сеанс или новый сеанс

Время ожидания сеансов может быть истечено (настроено в web.xml) или аннулировано вручную.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top