Ответ
Коды 1xx — информационные (Informational). Они указывают, что сервер получил запрос и продолжает его обработку, но клиент должен ожидать окончательного ответа.
Наиболее релевантные коды:
100 Continue: Сервер готов принять тело запроса. Клиент должен отправить его после получения этого кода. Используется для оптимизации, например, перед отправкой большого файла.101 Switching Protocols: Сервер соглашается сменить протокол по запросу клиента (например, переход с HTTP на WebSocket по заголовкуUpgrade).
Как это тестируется на практике?
- Автоматическая обработка: Современные HTTP-клиенты (например,
requestsв Python) обрабатывают100 Continueпрозрачно, если отправить заголовокExpect: 100-continue. - Тестирование WebSocket-апгрейда: Проверка, что сервер корректно отвечает
101на запрос с заголовкамиUpgrade: websocketиConnection: Upgrade.
Пример кода для проверки сценария с Expect: 100-continue:
import requests
# Отправка запроса с ожиданием промежуточного ответа 100 Continue
headers = {'Expect': '100-continue'}
# requests автоматически обработает статус 100 и отправит тело
response = requests.post('https://api.example.com/upload',
headers=headers,
data=large_file_data)
# Проверяем уже окончательный ответ
assert response.status_code == 200
Важность для тестировщика: Понимание 1xx кодов критично для тестирования:
- Протоколов реального времени (WebSockets, Server-Sent Events).
- Оптимизированной загрузки данных (чункированная передача, большие файлы).
- Сетевого взаимодействия низкого уровня (например, с помощью Wireshark).