8. Протокол HTTP.

Протокол передачи гипертекста (Hypertext Transfer Protocol) – протокол прикладного уровня для передачи данных (изначально – в виде HTML-документов, сейчас – для передачи произвольных данных).

HTTP запрос

Структура:

  1. Стартовая строка запроса (starting line) – обязательно!
  2. Заголовки (headers) – опционально
  3. Тело сообщения (message body) – опционально, отделяется пустой строкой

Метод URI HTTP/Версия

Методы:

Примеры стартовых строк:

GET /index.html HTTP/1.1
GET /index.html?x=1&y=%D0%9A%D0%BE HTTP/1.0
POST /login.php HTTP/1.1

HTTP-заголовки используются для настройки параметров передачи, описания тела сообщения (если оно есть) и прочих сведений. Записываются в виде ИмяЗаголовка: Значение. Есть заголовки, специфичные только для запросов или только для ответов. А есть универсальные заголовки.

Примеры запросов:

GET /wiki/List_of_HTTP_header_fields HTTP/1.1
Host: en.wikipedia.org
Accept-Language: en-US
User-Agent: Mozilla/5.0
POST /login.aspx HTTP/1.1
Host: mysite.azure.com
User-Agent: Mozilla/5.0
Content-Length: 22

User=Alex&Pass=123456

HTTP ответ

Структура:

  1. Стартовая строка ответа – обязательно!
  2. Заголовки – опционально
  3. Тело сообщения – опционально, отделяется пустой строкой

HTTP/Версия КодСостояния Пояснение

Коды состояния (Status Codes):

Примеры:

Пример HTTP ответа:

HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Mon, 18 May 2015 11:59:09 GMT
Content-Type: text/html
Content-Length: 178
Connection: close
Location: http://www.tut.by/index.html

<html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx</center>
</body>
</html>