← Назад к вопросам

Что такое код ответа 100?

2.3 Middle🔥 131 комментариев
#Другое

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Что такое код состояния HTTP 100 (Continue)?

Код состояния 100 Continue — это промежуточный (информационный) статус в протоколе HTTP, который указывает клиенту на то, что сервер готов принять тело запроса после получения заголовков. Это часть механизма условной отправки данных (expect-continue), который позволяет клиенту сначала отправить только заголовки запроса, убедиться, что сервер готов его обработать, и только затем отправить основное тело (например, большое количество данных).

Как работает процесс с кодом 100?

Процесс происходит в два этапа:

  1. Клиент отправляет предварительный запрос:

    • Включает заголовок Expect: 100-continue.
    • Отправляет только заголовки запроса (без тела).
    • Пример запроса (например, для загрузки файла):
    POST /upload HTTP/1.1
    Host: example.com
    Content-Type: application/json
    Content-Length: 1024
    Expect: 100-continue
    
    [тело запроса пока НЕ отправляется]
    
  2. Сервер анализирует заголовки и отправляет ответ:

    • Если сервер готов принять тело запроса (например, у него есть ресурсы, URL корректен), он отправляет промежуточный ответ 100 Continue.
    • Если сервер не готов (например, ошибка аутентификации или недопустимый запрос), он отправляет финальный код ошибки (например, 401 Unauthorized или 413 Payload Too Large), и клиент не отправляет тело запроса.
  3. Клиент действует на основе ответа сервера:

    • При получении 100 Continue клиент отправляет тело запроса.
    • При получении кода ошибки (например, 413) клиент прерывает отправку, экономя трафик и время.

Практический пример кода

Вот пример на Node.js, показывающий, как сервер может обрабатывать запрос с Expect: 100-continue:

const http = require('http');

const server = http.createServer((req, res) => {
    // Проверяем заголовок Expect
    if (req.headers.expect === '100-continue') {
        // Симулируем проверку: например, проверяем размер контента
        const contentLength = parseInt(req.headers['content-length'],奥 10);
        
        if (contentLength > 5000) {
            // Если тело слишком большое, сразу отказываем
            res.writeHead(413, { 'Content-Type': 'text/plain' });
            res.end('Payload Too Large');
            return;
        }
        
        // Если все хорошо, отправляем 100 Continue
        res.writeContinue();
    }

    // Обрабатываем оставшуюся часть запроса
    let body = '';
    req.on('data', chunk => body += chunk);
    req.on('end', () => {
        res.writeHead(200, { 'Content-Type': 'text/plain' });
        res.end(`Received data: ${body}`);
    });
});

server.listen(3000, () => console.log('Server running on port 3000'));

Зачем нужен код 100 Continue?

Основные причины использования:

  • Оптимизация передачи больших данных: Клиент избегает отправки объемного тела (например, файла размером 1 ГБ), если сервер отклонит запрос из-за ошибки в заголовках (например, 401 Unauthorized). Это экономит сетевой трафик и снижает нагрузку.
  • Согласование условий: Позволяет серверу заранее проверить условия, такие как:
    • Достаточно ли места на диске?
    • Корректен ли тип контента?
    • Прошла ли аутентификация?
  • Улучшение производительности: В медленных сетях или при высокой задержке (latency) это предотвращает ненужную передачу данных.

Особенности и нюансы

  • HTTP/1.1 спецификация: Код 100 определен в RFC 7231 (раздел 6.2.1). В HTTP/2 механизм работает аналогично, но с использованием фреймов.
  • Автоматическая обработка в библиотеках: Многие клиентские библиотеки (например, fetch в браузерах, axios или requests в Python) автоматически поддерживают Expect: 100-continue для больших запросов, но разработчик может этого не заметить.
  • Необязательное использование: Серверы могут игнорировать Expect: 100-continue и сразу обрабатывать запрос, если это допустимо. Клиенты обычно ждут ответа 100 недолго (таймаут 1-2 секунды), затем отправляют тело.
  • Редкость в повседневной разработке: В веб-приложениях код 100 редко встречается явно, так как большинство запросов (GET, мелкие POST) не требуют этой оптимизации. Он чаще используется в API для загрузки файлов или стриминга данных.

Заключение

100 Continue — это важный, хотя и часто "невидимый", механизм оптимизации в HTTP, который помогает избежать бесполезной передачи данных при ошибочных запросах. Как frontend-разработчик, вы можете столкнуться с ним при работе с большими файлами через fetch или XMLHttpRequest, но обычно библиотеки и браузеры управляют этим процессом автоматически. Понимание этого кода полезно для отладки сетевых запросов и проектирования эффективных API.

Что такое код ответа 100? | PrepBro