JavaRush /Курсы /JSP & Servlets /HTTP-заголовки, часть 2

HTTP-заголовки, часть 2

JSP & Servlets
9 уровень , 6 лекция
Открыта

7.1 Заголовок Keep-Alive

И еще несколько полезных заголовков. Заголовок Keep-Alive указывает серверу, что соединение нужно оставить открытым: сервер не будет закрывать соединение сразу после отправки ответа. Это приведет к тому, что следующий запрос от этого же клиента к серверу будет выполнен быстрее.

Пример такого заголовка:


           Connection: Keep-Alive
        

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

7.2 Заголовок Cache-Control

С помощью заголовка Cache-Control можно управлять кэшированием контента. Грамотно настроенное кэширование ускоряет работу с контентом, криво настроенное создает проблемы на ровном месте.

Чтобы отключить кэширование нужно написать такой заголовок:


           Cache-Control: no-cache, no-store, must-revalidate
        

В кэше не должно сохраняться ничего — ни по запросам клиента, ни по ответам сервера. Запрос всегда отправляется на сервер, ответ всегда загружается полностью.

Также можно включить самый примитивный и надежный тип кэширования:


           Cache-Control: no-cache
        

Перед тем, как выдать копию, кэш запрашивает исходный сервер на предмет актуальности ресурса.

Можно указать время кэширования ресурса в секундах. Выглядеть такой заголовок будет так:


           Cache-Control: max-age=31536000
        

Этот заголовок задает максимальное время хранения контента в кэше.

Более детально про кеширование ты можешь почитать тут

7.3 Cookie

Сервер может хранить данные на стороне клиента. Такие данные называются cookie. Впрочем, cookie может сохранить и клиент. Они бывают очень полезны обеим сторонам.

Например, ты заходишь на сайт, а ты на нем уже авторизирован. То есть, когда ты залогинился в него в прошлый раз, сервер приказал браузеру сохранить у себя информацию об успешном логине определенного пользователя.

Вот как выглядит Cookie в запросе:


          Cookie: name=value;name2=value2;nameN=valueN
        

Cookie обычно хранит браузер и они привязаны к определенному домену. Когда ты снова заходишь на тот же домен, cookie автоматически добавляются к http-запросу и http-ответу. Сервер/домен не может получить cookie, которые хранит в браузере другой сервер/домен.

У каждого cookie есть 4 основных параметра:

  • имя;
  • значение;
  • время действия (сколько времени их хранить);
  • домен, к которому привязаны cookie.

Cookie хранятся и передаются в текстовом виде, так что и имя, и значение – это строки. Если время действия cookie не указано, то они уничтожаются после закрытия браузера.

7.4 Session

После того, как пользователь залогинился на сайте, говорят, что между сайтом и сервером установилась сессия.

Сервер у себя создает специальный объект – HttpSession, где хранит всю нужную информацию для работы с авторизованным клиентом. А уникальный номер этого объекта хранит в браузере в виде Cookie.

Веб-сервера на Java обычно используют имя JSESSIONID для хранения идентификатора сессии. Выглядит это примерно так:


          Cookie: JSESSIONID=ABAD1D
        

На стороне сервера можно задать время существования сессии, а также то, будет ли она автоматически закрываться при закрытии браузера.

Комментарии (5)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
4 мая 2025
понятно что нечего не понятно. 🙃
Семён Уровень 34
25 октября 2024
а про Python, я с курса про Python и хотел бы знать про него
Надежда Уровень 104 Expert
22 июня 2023
Что это за два нуля в конце заголовка запроса Cookie?
Андрей Заика Уровень 1
23 мая 2024
Что-то мне кажется что это опечатка и этих нулей там быть не должно
Наталия Уровень 29
26 января 2025
Немного запутали c Cookie, проверяю инфо в Google