Какова структура стандартного HTTP-ответа?

Ответ

Стандартный HTTP-ответ, который сервер отправляет клиенту, состоит из трех основных компонентов, разделенных специальными символами возврата каретки и перевода строки (CRLF).

1. Стартовая строка (Status Line)

Содержит результат обработки запроса и состоит из трех частей:

  • Версия протокола: Например, HTTP/1.1 или HTTP/2.
  • Код состояния (Status Code): Числовой код, отражающий результат (e.g., 200, 404, 500).
  • Пояснение (Reason Phrase): Краткое текстовое описание кода (e.g., OK, Not Found).

Пример: HTTP/1.1 200 OK

2. Заголовки (Headers)

Пары ключ: значение, которые передают метаинформацию об ответе и его теле. Ключевые заголовки:

  • Content-Type: MIME-тип ресурса в теле ответа (e.g., application/json, text/html).
  • Content-Length: Размер тела ответа в байтах.
  • Cache-Control: Инструкции по кэшированию ответа браузером или прокси-сервером.
  • Set-Cookie: Устанавливает cookie на стороне клиента.

3. Тело ответа (Message Body)

Необязательная часть, содержащая сам ресурс (HTML-страница, JSON-объект, изображение). Отделяется от заголовков одной пустой строкой (CRLF).

Пример полного HTTP-ответа с JSON-телом:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: 38
Date: Mon, 23 Oct 2023 10:00:00 GMT
Connection: keep-alive

{
  "userId": 1,
  "status": "active"
}

Ответ 18+ 🔞

А, слушай, ну вот, блядь, классика жанра — HTTP-ответ. Это ж как письмо от сервера тебе, пользователю, приходит. Три главных куска, разделённых этими ёбаными CRLF — возврат каретки и перевод строки, ну ты в курсе.

1. Стартовая строка (Status Line)

Тут тебе, сука, результат всей этой движухи в трёх актах:

  • Версия протокола: Ну, HTTP/1.1 или там HTTP/2. Типа, на каком языке с тобой говорят.
  • Код состояния (Status Code): Циферка, которая всё говорит. 200 — всё заебись, 404 — нихуя не нашёл, 500 — сервер сам себя обосрал.
  • Пояснение (Reason Phrase): Ну, чтоб ты, человек, тоже понял. OK, Not Found — всё логично.

Пример: HTTP/1.1 200 OK — идеальный мир, ёпта.

2. Заголовки (Headers)

А это, блядь, как сопроводиловка, пары ключ: значение. Метаинформация, всякая хуйня о том, что в теле лежит.

  • Content-Type: Тип контента, который тебе шлют. application/json — JSONчик, text/html — страничка.
  • Content-Length: Размер тела в байтах. Чтобы ты знал, сколько жрать.
  • Cache-Control: Инструкции, как кэшировать эту хрень, чтобы потом быстрее было.
  • Set-Cookie: А вот это, сука, печеньку тебе в браузер суют. Запомнится, падла.

3. Тело ответа (Message Body)

Ну а это уже сам товар, блядь. HTML, JSON, картинка — что запрашивал. Главное — от заголовков его одной пустой строкой отделить (CRLF), а то пиздец будет, ничего не заработает.

Вот тебе живой пример, смотри, как оно выглядит, когда всё ок:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: 38
Date: Mon, 23 Oct 2023 10:00:00 GMT
Connection: keep-alive

{
  "userId": 1,
  "status": "active"
}

Вот и вся магия, блядь. Пришло такое — распаковывай и радуйся. Не пришло или пришло с кодом 500 — ну, извини, дружок, сегодня не твой день.