Ответ
Коды состояния 1xx (Informational) — это промежуточные ответы сервера, которые информируют клиента о статусе обработки запроса, но не завершают его.
Назначение: Улучшить эффективность связи, позволяя клиенту узнать, стоит ли отправлять тело запроса или готов ли сервер к смене протокола.
Основные коды:
- 100 Continue: Сервер готов принять тело запроса. Отправляется в ответ на заголовок
Expect: 100-continue. Клиент должен отправить тело после получения этого кода. - 101 Switching Protocols: Сервер соглашается на смену протокола, запрошенную клиентом (например, переход с HTTP/1.1 на WebSocket).
Пример потока запроса с кодом 100:
Клиент отправляет:
POST /upload HTTP/1.1
Host: example.com
Expect: 100-continue
Content-Length: 1024
(пауза, тело не отправляется)
Сервер отвечает:
HTTP/1.1 100 Continue
Клиент, получив 100, отправляет тело запроса.
Почему это важно для тестирования: Нужно убедиться, что клиентское приложение корректно обрабатывает эти промежуточные ответы и продолжает отправку данных.
Ответ 18+ 🔞
А, слушай, вот эта хуйня с кодами 1xx — это же просто серверный троллинг, блядь! Представь: ты ему уже почти отправил запрос, а он такой — «стой, погоди, я ещё подумаю, ёпта!».
Ну то есть, это типа предварительные пистончики, которые сервер шлёт, чтобы ты не скучал, пока он там свои мозги скрипит. Не окончательный ответ, а так — «я живой, не бей, ща всё будет».
Зачем это надо, спросишь? А чтобы не гонять впустую гигабайты данных, если сервер уже сломался или не готов. Экономия трафика, мать его.
Самые популярные штуки из этой серии:
- 100 Continue — это когда сервер такой: «Ага, ну ладно, давай своё тело запроса, я погляжу». Обычно клиент стелит перед этим заголовок
Expect: 100-continue, типа «ты готов, сука, принять мои мегабайты?». И если сервер не в говне, он отвечает «100 Continue», и только тогда начинается настоящая движуха. - 101 Switching Protocols — это уже полная смена декораций. Типа «окей, чувак, давай перейдём с этого скучного HTTP на какой-нибудь WebSocket, будем в реальном времени общаться». Согласие на апгрейд, короче.
Вот смотри, как это выглядит в жизни, на примере этого самого 100-го:
Клиент, хитрожопый, сначала только голову суёт:
POST /upload HTTP/1.1
Host: example.com
Expect: 100-continue
Content-Length: 1024
(и молчит, тело не шлёт, ждёт)
Сервер, подумав секунду:
HTTP/1.1 100 Continue
(типа «ну давай, не томи»)
И вот тут-то клиент, получив добро, уже вываливает все свои 1024 байта.
А для тестировщика тут, блядь, раздолье! Надо проверить, не обосрётся ли твоё приложение, когда получит этот «100 Continue». Оно должно не тупить, а чётко понять: «ага, щас можно слать дальше». Или, если сервер вместо 100 сразу ошибку шлёт, — остановиться и не нести свой груз в никуда. В общем, волнение ебать, но логика должна быть железная.