HTTP
====

**Протокол передачи гипертекста (*Hypertext Transfer Protocol - HTTP)*** - это прикладной протокол для передачи гипертекстовых документов, таких как HTML. Он создан для связи между веб-браузерами и веб-серверами, хотя в принципе HTTP может использоваться и для других целей. Протокол следует классической клиент-серверной модели, когда клиент открывает соединение для создания запроса, а затем ждёт ответа. HTTP - это протокол без сохранения состояния, то есть сервер не сохраняет никаких данных (состояние) между двумя парами "запрос-ответ". Несмотря на то, что HTTP основан на TCP/IP, он также может использовать любой другой протокол транспортного уровня с гарантированной доставкой.

Учебники
--------

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

Обзор HTTP

Основные свойства клиент-серверного протокола: что можно сделать и для чего он предназначен.

HTTP-кеширование (HTTP Cache)

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

HTTP-куки (HTTP cookies)

Как работают куки, можно почитать в RFC 6265. При обслуживании HTTP-запроса сервер может отправить в ответе HTTP-заголовок `Set-Cookie`. После этого значение куки посылается клиентом с каждым запросом к этому серверу. Делается это в форме заголовка запроса `Cookie`. Дополнительно можно указать истечение срока куки, а так же ограничения для специфического домена или пути.

Контроль доступа (совместное использование ресурсов между разными источниками, HTTP access control (CORS))

**Межсайтовые HTTP-запросы** (кросс-сайтовые) - это HTTP-запросы к ресурсам, находящимся в домене, **отличающемся** от того, с которого производится запрос. Например, HTML-страница, загружаемая с домена А (`http://domaina.example`), запрашивает изображение с домена Б (`http://domainb.foo`), используя тег `img` (`http://domainb.foo/image.jpg`). Это происходит постоянно в мире веба: страницы загружают различные ресурсы в кросс-сайтовой манере, включая стили (CSS), изображения, скрипты и другие ресурсы. CORS позволяет разработчикам сайтов контролировать межсайтовые запросы.

Эволюция HTTP (en-US)

Краткое описание изменений, произошедших в HTTP, начиная с самых ранних версий, заканчивая новой HTTP/2 и далее.

Принципы веб-безопасности Mozilla

Сборник советов для помощи в разработке защищённых веб-приложений.

HTTP-сообщения (HTTP Messages)

Описывает тип и структуру разных видов сообщений HTTP/1.x и HTTP/2.

Обычный сеанс HTTP

Показывает и описывает течение обычного сеанса HTTP.

Управление подключениями в HTTP/1.x

Описывает три модели управления подключениями, доступными в HTTP/1.x, их сильные и слабые стороны.

Контроль предварительной загрузки DNS (Controlling DNS prefetching) (en-US)

Firefox, как и большинство других браузеров, выполняет **предварительную загрузку DNS (DNS prefetching)**. Это действие, когда браузеры превентивно выполняют разрешение доменных имён (получают имена доменов) для ссылок, по которым пользователь может перейти, а также для ссылок на ресурсы, такие как картинки, CSS, JavaScript. Эта предварительная загрузка выполняется в фоновом режиме, так что вполне вероятно, что к моменту обращения к объектам в документе DNS уже получен. Это уменьшает задержки, когда, например, пользователь кликает на ссылку.

Справочники
-----------

Глубже изучите HTTP с помощью справочников и документации.

HTTP-заголовки (HTTP Headers)

Заголовки HTTP-сообщения используются для точного описания загружаемого ресурса или поведения сервера или клиента. Пользовательские заголовки можно добавить, используя `X-` префикс; другие перечислены в IANA registry, содержание которого в свою очередь определено в RFC 4229. IANA так же поддерживает регистр предложенных новых HTTP-заголовков.

Методы HTTP-запроса

Различные операции, которые выполняются с HTTP:

* `GET`
* `POST`
* `OPTIONS`
* `DELETE`
* `TRACE`
* `PATCH`
* другие

Коды ответа (HTTP response codes)

Коды ответа HTTP указывают на результат выполнения определённого HTTP-запроса. Ответы сгруппированы в пять категорий: информационные ответы, удачные ответы, перенаправления, ошибки клиента и ошибки сервера.

Директивы CSP (en-US)

Поля заголовка ответа `Content-Security-Policy` (en-US) позволяют администраторам веб-сайтов контролировать ресурсы, которые браузер пользователя может загрузить на данную веб-страницу. За некоторым исключением, эти политики связаны с указанием сервера-источника и адресов доступа (обращения) скриптов.

Инструменты и ресурсы
---------------------

Полезные инструменты и ресурсы для понимания и отладки HTTP.

Инструменты разработчика Firefox

Сетевой монитор

Mozilla Observatory

Проект, созданный в помощь разработчикам, системным администраторам и специалистам по безопасности для создания безопасных и надёжных сайтов.

RedBot

Инструмент для проверки кеширования заголовков.

Принципы работы современных веб-браузеров

Комплексная статья по внутренностям браузеров и потоку запросов через протокол HTTP. Это нужно понимать всем веб-разработчикам.

Смотрите также
--------------

* Controlling DNS prefetching
* HTTP pipelining FAQ
* HTTP-куки (HTTP cookies)
* HTTP заголовки
* Basic access authentication
* HTTP контроль доступа (CORS)