Есть ли что-нибудь в ответе кроме заголовка и тела

Ответ

Да, HTTP-ответ содержит несколько частей:

  1. Статусная строка (HTTP версия, код статуса, текст статуса)
  2. Заголовки (Headers)
  3. Тело ответа (Body)
  4. Опционально - куки (Cookies)

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

HTTP/1.1 200 OK
Content-Type: application/json
Set-Cookie: session=abc123; Path=/

{"message": "Success"}

Основные компоненты:

  • Статус (200, 404 и др.)
  • Заголовки (Content-Type, Cache-Control и др.)
  • Тело (HTML, JSON и др. данные)
  • Метод (GET, POST и др.) указывается в запросе, но не в ответе

Ответ 18+ 🔞

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

Смотри, представь, ты серверу крикнул: «Эй, дай-ка мне главную страницу!» (это твой запрос). А он тебе в ответ — не просто файл швыряет, а целое послание с протоколом, как дипломатическую ноту. И вот из чего эта нота состоит, блядь:

  1. Статусная строка. Это как первая фраза в разговоре. Сервер тебе сразу заявляет: «Всё пиздато, держи!» (200 OK) или «Пошёл нахуй, ничего нет!» (404 Not Found), или «Я занят, отъебись!» (503 Service Unavailable). Тут же версия протокола, типа HTTP/1.1. Короче, сразу ясно, понравилась ли серверу твоя просьба или ты ему весь день испортил.

  2. Заголовки (Headers). А вот это уже технические подробности, ёпта. Тут сервер такой: «Слушай, данные я тебе в формате JSON посылаю, смотри не обосрись» (Content-Type: application/json). Или: «Запомни этот кусок, чтобы сто раз не дергать» (Cache-Control: max-age=3600). А может, и подколет: «А вот тебе печенька, заходи ещё» (Set-Cookie: session=abc123). Заголовков этих — овердохуища, на все случаи жизни.

  3. Тело ответа (Body). А вот это, сука, и есть самое вкусное — то, ради чего всё и затевалось. HTML-страница, JSON с данными, картинка котика — всё, что душе угодно. Может быть и пустым, если сервер просто сказал «OK» и больше нихуя.

  4. Куки (Cookies). Их обычно в заголовки пихают, как в примере (Set-Cookie), но они такие важные, что про них отдельно орут. Это как жетон в гардеробе: «Держи, мудак, при следующем запросе предъяви, а то не узнаю тебя».

Вот смотри на пример, как на наглядную пьесу:

HTTP/1.1 200 OK
Content-Type: application/json
Set-Cookie: session=abc123; Path=/

{"message": "Success"}

Видишь? Сервер говорит: «Всё чётко (200 OK), данные в JSON (Content-Type), вот тебе пропуск на будущее (Set-Cookie), а в самом конверте — бумажка с надписью "Success"». И делу конец.

И да, запомни раз и нахуй: метод запроса (GET, POST, PUT) — это ТЫ серверу говоришь, что делать. В ответе его нет, серверу похуй, как ты его просил, он уже сделал. Он тебе только результат отсылает. Всё, теперь ты гуру, можешь идти и тыкать этим знанием в лицо тем, кто не в теме. Чих-пых!