Подтвердить что ты не робот

Отслеживание сеансов HTTP

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

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

4b9b3361

Ответ 1

Как вы упомянули, общие способы реализации отслеживания сеансов 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 сеанса на клиенте - подразумевая, что клиент не поддерживает/разрешает куки.

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

Ответ 2

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

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

Set-Cookie: session=12345; path=/

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

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

Cookie: session=12345

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

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

Ответ 3

Отслеживание сеансов - это серверная вещь.

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

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

Ответ 4

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

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

Ответ 6

Найдите достаточно деталей здесь

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

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

Сессии могут быть отключены (настроены в web.xml) или вручную недействительны.