#Полезнаяинформация
Структура HTTP протокола.
Каждое HTTP-сообщение состоит из трёх частей, которые передаются в указанном порядке:
Стартовая строка (англ. Starting line) - определяет тип сообщения, различается для запроса и ответа;
Заголовки (англ. Headers) - характеризуют тело сообщения, параметры передачи и прочие сведения;
Тело сообщения (англ. Message Body) - непосредственно данные сообщения.
Обязательно должно отделяться от заголовков пустой строкой.
Для версии протокола 1.1 сообщение запроса обязательно должно содержать заголовок Host.
1. Стартовая строка.
Стартовая строка запроса выглядит так: Метод URI HTTP/Версия, где:
Метод (англ. Method) - тип запроса, одно слово заглавными буквами;
URI (не путать с URL) определяет путь к запрашиваемому документу;
Версия (англ. Version) - пара разделенных точкой цифр. Например: 1.1.
Чтобы запросить страницу данной статьи, клиент должен передать строку (задан всего один заголовок):
GET /wiki/HTTP HTTP/1.1
Host: ru.wikipedia.org
Стартовая строка ответа сервера имеет следующий формат: HTTP/Версия КодСостояния Пояснение, где:
Версия - пара разделенных точкой цифр, как в запросе;
Код состояния (англ. Status Code) - три цифры. По коду состояния определяется дальнейшее содержимое сообщения и поведение клиента;
Пояснение (англ. Reason Phrase) - текстовое короткое пояснение к коду ответа для пользователя. Никак не влияет на сообщение и является необязательным.
Например, стартовая строка ответа сервера на предыдущий запрос может выглядеть так:
HTTP/1.0 200 OK
2. Заголовки.
Заголовки HTTP (англ. HTTP Headers) - это строки в HTTP-сообщении, содержащие разделённую двоеточием пару параметр-значение. Формат заголовков соответствует общему формату заголовков текстовых сетевых сообщений ARPA (см. RFC 822). Заголовки должны отделяться от тела сообщения хотя бы одной пустой строкой. Примеры заголовков:
Server: Apache/2.2.11 (Win32) PHP/5.3.0
Last-Modified: Sat, 16 Jan 2010 21:16:42 GMT
Content-Type: text/plain; charset=windows-1251
Content-Language: ru
основных группы:
General Headers («Основные заголовки») - могут включаться в любое сообщение клиента и сервера;
Request Headers («Заголовки запроса») - используются только в запросах клиента;
Response Headers («Заголовки ответа») - только для ответов от сервера;
Entity Headers («Заголовки сущности») - сопровождают каждую сущность сообщения.
3. Тело сообщения.
Тело HTTP-сообщения (message-body), если оно присутствует, используется для передачи тела объекта, связанного с запросом или ответом. Тело сообщения отличается от тела объекта (entity-body) только в том случае, когда применяется кодирование передачи, что указывается полем заголовка Transfer-Encoding.
Поле Transfer-Encoding должно использоваться для указания любого кодирования передачи, примененного приложением в целях гарантирования безопасной и правильной передачи сообщения. Поле Transfer-Encoding - это свойство сообщения, а не объекта, и, таким образом, может быть добавлено или удалено любым приложением в цепочке запросов/ответов.
Post #89
783
- 🔥 7
- ❤ 2