DNS RobotDNS Propagation Checker
ГлавнаяDNSWHOISIPSSL
DNS RobotDNS Propagation Checker

DNS-инструменты нового поколения

Политика конфиденциальностиУсловия использованияО насБлогКонтакты

DNS Инструменты

DNS ПоискДомен в IPNS ПоискMX ПоискCNAME ПоискПоказать все

Инструменты Email

Проверка SPF записиПроверка DMARCПроверка DKIMТест SMTPАнализ заголовков EmailПоказать все

Инструменты для сайтов

WHOIS ПоискДоступность доменаПоиск поддоменовОпределение CMSАнализ ссылокПоказать все

Сетевые инструменты

Ping инструментТрассировкаПроверка портовПроверка HTTP заголовковПроверка SSL сертификатаПоказать все

IP Инструменты

IP ПоискМой IP адресПроверка IP в чёрных спискахIP в имя хостаASN ПоискПоказать все

Утилиты

Сканер QR кодаГенератор QR кодаUPI QR Code GeneratorWiFi QR Code GeneratorПереводчик азбуки МорзеПоказать все
© 2026 DNS Robot. Разработано: ❤ Shaik Brothers
Все системы работают
Made with
Главная/Блог/Код статуса HTTP 302 (302 Found): что значит и когда использовать

Код статуса HTTP 302 (302 Found): что значит и когда использовать

Shaik Vahid26 апр. 2026 г.9 мин чтения
Инфографика кода статуса HTTP 302 — временное перенаправление с заголовком Location и сравнение 301 vs 302 vs 307
Инфографика кода статуса HTTP 302 — временное перенаправление с заголовком Location и сравнение 301 vs 302 vs 307

Ключевой вывод

Код статуса HTTP 302 (302 Found) — это временное перенаправление: запрашиваемый ресурс временно находится по другому URL, указанному в заголовке Location, но оригинальный URL должен и дальше использоваться для будущих запросов. Используйте 302 для краткосрочных перенаправлений (логин, A/B-тесты, обслуживание), а 301 — только когда перемещение постоянное. Чтобы сохранить POST-запросы при перенаправлении, используйте 307 вместо 302.

Advertisement

Что такое код статуса HTTP 302?

Код статуса HTTP 302 — официально называемый 302 Found — это код HTTP-ответа, сообщающий клиенту (обычно браузеру), что запрашиваемый ресурс был временно перемещён на другой URL. Новый URL указывается в заголовке Location ответа, и клиент должен получить ресурс оттуда только для этого запроса.

Поскольку перемещение временное, клиент должен и дальше использовать оригинальный URL для будущих запросов. Поисковые системы, браузеры и закладки не должны заменять оригинальный URL целью перенаправления. Это ключевое поведенческое отличие между HTTP 302 и 301 Moved Permanently.

Код 302 относится к классу 3xx перенаправлений HTTP-кодов статуса, определённых в RFC 9110. Несмотря на историческое название «Found», тело ответа почти никогда не используется — современные браузеры сразу следуют за заголовком Location, не отрисовывая его.

Заметка

Краткое определение: ответ 302 означает «запрашиваемый вами ресурс временно находится здесь — заберите его по URL из заголовка Location, но в следующий раз продолжайте использовать оригинальный URL.»

Структура ответа 302

Ответ с кодом статуса HTTP 302 всегда содержит два обязательных элемента: саму строку статуса и заголовок Location, указывающий на новый URL. Без корректного заголовка Location клиент не сможет проследовать перенаправление.

  • Строка статуса — HTTP/1.1 302 Found (или HTTP/2 302 в HTTP/2)

  • Заголовок Location — целевой URL, за которым должен проследовать клиент (обязателен)

  • Cache-Control — обычно no-cache, чтобы браузеры не кэшировали цель перенаправления навсегда

  • Тело — обычно пустое; серверы могут включить небольшую HTML-страницу для legacy-клиентов (<html><body><a href="...">Нажмите здесь</a></body></html>)

http
HTTP/1.1 302 Found
Location: https://www.example.com/new-page
Content-Type: text/html; charset=UTF-8
Content-Length: 0
Cache-Control: no-cache, no-store
Date: Mon, 27 Apr 2026 14:00:00 GMT

Совет

Всегда задавайте Cache-Control: no-cache в ответе 302. Без этого некоторые браузеры могут кэшировать перенаправление на текущую сессию и не перепроверять оригинальный URL — это нарушает «временную» природу перенаправления.

Заголовок Location может быть абсолютным URL (https://example.com/path) или относительным к пути (/path). Современные HTTP-клиенты принимают оба варианта, но абсолютные URL рекомендуются для ясности.

302 vs 301 vs 307 vs 308: какое перенаправление выбрать?

HTTP определяет пять основных кодов перенаправления, и выбор правильного важен для кэширования, SEO и сохранения метода запроса. Используйте таблицу как матрицу решений:

КодПостоянствоМетод сохраняется?Кэшируется браузером?Лучшее применение
301 Moved PermanentlyПостоянноеМожет изменить POST→GETДа (агрессивно)Постоянные изменения URL, миграция домена
302 FoundВременноеЧасто меняет POST→GETНетЛогин-флоу, A/B-тесты, обслуживание
303 See OtherВременноеВсегда меняет на GETНетШаблон POST/Redirect/GET после отправки формы
307 Temporary RedirectВременноеДа — сохраняетсяНетВременные перенаправления, требующие сохранения POST/PUT
308 Permanent RedirectПостоянноеДа — сохраняетсяДаПостоянные перенаправления, требующие сохранения POST/PUT

Внимание

Никогда не используйте 302 для постоянного перемещения (например, смены домена). Поисковые системы трактуют 302 как временный и не передают сигналы ранжирования на новый URL. Для постоянных перемещений всегда используйте 301 или 308.

Современная рекомендация: если нужен временный редирект и вы хотите однозначной обработки метода, используйте 307 вместо 302. Код 307 был добавлен в HTTP/1.1 именно потому, что браузеры исторически нарушали спецификацию, меняя POST на GET при 302 — и это неправильное поведение настолько распространилось, что стало де-факто стандартом.

Когда использовать редирект 302?

Используйте код статуса HTTP 302, когда перенаправление действительно временное — то есть вы планируете убрать или изменить цель в будущем. Распространённые легитимные сценарии:

  • Перенаправления при логине — Отправлять неаутентифицированного пользователя с /dashboard на /login, а затем обратно после входа

  • A/B-тестирование — Перенаправлять 50% пользователей на вариант, не меняя канонический URL

  • Страницы обслуживания — Временно перенаправлять весь трафик на /maintenance, пока патчите сервер

  • Геолокационная маршрутизация — Отправлять посетителей с / на /ru или /us по стране, оставляя / каноническим входом

  • Мобильные перенаправления — Перенаправлять смартфон-пользователей с example.com на m.example.com (сегодня предпочтителен адаптивный дизайн)

  • Страницы товаров без склада — Отправлять покупателей в категорию, пока товар не появится снова

  • Краткосрочные промо-URL — /black-friday перенаправляет на лендинг кампании только во время акции

Если что-то из этого станет постоянным, переключитесь на 301. Поисковые системы ждут несколько месяцев, прежде чем долго существующий 302 будет трактоваться как 301, поэтому оставление постоянного перемещения в 302 стоит сигналов ранжирования в этот период.

Advertisement

Как отправить код статуса 302

В большинстве веб-серверов и фреймворков есть встроенные хелперы для отправки редиректа 302. Ниже самые распространённые шаблоны. Каждый отправляет HTTP 302 Found с заголовком Location — это единственные два обязательных элемента ответа 302.

Nginx

В Nginx используйте директиву return с кодом 302 (по умолчанию, если код опущен, тоже 302):

nginx
server {
    listen 80;
    server_name example.com;

    # Временный редирект (302 Found)
    location /old-page {
        return 302 https://example.com/new-page;
    }
}

Apache (.htaccess)

В Apache используйте Redirect с кодом 302 или RewriteRule с флагом [R=302,L]:

apache
# Простой временный редирект
Redirect 302 /old-page https://example.com/new-page

# Или с mod_rewrite для сопоставления по шаблону
RewriteEngine On
RewriteRule ^maintenance$ /maintenance.html [R=302,L]

Node.js (Express)

Метод res.redirect() в Express по умолчанию использует 302, если код не указан:

javascript
// Временный редирект (302 Found по умолчанию)
app.get('/dashboard', (req, res) => {
  if (!req.user) {
    return res.redirect('/login') // отправляет 302
  }
  // ...рендер dashboard
})

// Или явно:
res.redirect(302, '/login')

Совет

Если нужно сохранить метод запроса (POST, PUT, DELETE), используйте res.redirect(307, '/new-url') вместо 302. Браузеры понижают POST 302 до GET — 307 сохраняет оригинальный метод.

Как проверить код статуса 302

После реализации редиректа 302 убедитесь, что он работает корректно. Самый быстрый способ — curl из терминала: он показывает точный код статуса и заголовок Location без вмешательства браузерного кэша.

bash
# Показать только заголовки ответа (-I), не следуя за редиректом
curl -I https://example.com/old-page

# Ожидаемый вывод:
# HTTP/2 302
# location: https://example.com/new-page
# cache-control: no-cache
# date: Mon, 27 Apr 2026 14:00:00 GMT

# Пройти всю цепочку (-L) и показать каждый хоп
curl -ILs https://example.com/old-page | grep -i 'HTTP/\|location:'

Заметка

DevTools браузера тоже работают: откройте вкладку Network, включите Preserve log и загрузите URL. Каждый редирект появится отдельной записью с кодом статуса и заголовком Location. Это самый простой способ отладки многоступенчатых цепочек.

Если у вас нет доступа к терминалу, используйте бесплатный Проверщик редиректов DNS Robot для отслеживания всей цепочки с нейтральной локации, или Проверщик HTTP-заголовков для просмотра сырых заголовков ответа — оба обходят браузерный кэш.

Редиректы 302 и SEO

Код статуса HTTP 302 сообщает поисковым системам: «это перемещение временное, оставьте оригинальный URL в индексе.» Это имеет прямые последствия для сигналов ранжирования.

Согласно Google Search Central, 302 не передаёт сигналы ранжирования с оригинального URL на цель редиректа так, как это делает 301. Оригинальный URL остаётся каноническим. Google всё ещё может индексировать целевую страницу, если на неё указывают другие сигналы канонизации (внутренние ссылки, sitemap, hreflang) — но сам 302 не является каноническим сигналом.

  • Используйте 301 для постоянных перемещений — Смены домена, изменения структуры URL, объединение страниц

  • Используйте 302 для временных перемещений — Логин-флоу, A/B-тесты, обслуживание, региональная маршрутизация

  • Не оставляйте постоянное перемещение в 302 — Google ждёт месяцы, прежде чем долгий 302 будет трактоваться как 301, теряя equity ранжирования

  • Избегайте цепочек — A → 302 → B → 302 → C размывает сигналы и замедляет загрузку. Каждый хоп добавляет задержку

Внимание

Если видите редиректы 302 на URL, которые должны ранжироваться (главная страница, ключевые лендинги), проаудируйте их с помощью Проверщика редиректов DNS Robot. Неправильно настроенный 302 на постоянном перемещении может тихо убить ранжирование.

Почему 302 меняет POST-запросы на GET

Это самое удивительное поведение HTTP 302. Оригинальный RFC говорил, что клиенты должны сохранять метод запроса при следовании за редиректом. Но ранние браузеры — Mosaic, Netscape, IE — все меняли POST на GET при 302, и это неправильное поведение настолько распространилось, что было стандартизировано в WHATWG Fetch Standard.

Сегодня, когда браузер отправляет POST /login и сервер отвечает 302 Found, браузер автоматически отправляет GET /next-page к цели редиректа. Данные формы теряются. Это редко то, что задумывают разработчики сервера.

http
# Что вы отправляете:
POST /submit-form HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded

name=Alice&email=alice@example.com

# Сервер отвечает 302:
HTTP/1.1 302 Found
Location: /thank-you

# Браузер следует с GET (данные формы теряются!):
GET /thank-you HTTP/1.1
Host: example.com

Совет

Правило: GET → 302 — это нормально, POST → 302 — рискованно. Для отправки форм предпочтительнее 303 See Other (намеренный GET на следующей странице) или 307 Temporary Redirect (сохранение POST).

Если редирект должен сохранить оригинальный метод (POST остаётся POST, PUT остаётся PUT), используйте 307 Temporary Redirect вместо 302. Если хотите намеренно отбросить тело и переключиться на GET — классический шаблон POST/Redirect/GET — используйте 303 See Other. Оба однозначны; 302 — нет.

Advertisement

Частые проблемы с 302 и как их исправить

Когда HTTP 302 идёт не так, обычно это проявляется одним из этих симптомов. У большинства простые решения:

  • `Получаю 302 вместо 200` — Сервер делает редирект, когда не должен. Проверьте .htaccess, конфигурацию Nginx или middleware фреймворка на нежелательные правила

  • `302 без заголовка Location` — Невалидный ответ. Браузеры покажут пустую страницу. Убедитесь, что код устанавливает заголовок Location до отправки статуса

  • `302, перенаправляющий на самого себя` — Цикл редиректов. URL Location совпадает с URL запроса. Проверьте правило на отсутствующие условия

  • `302 теряет данные формы` — POST → 302 → GET отбрасывает тело. Переключитесь на 307 Temporary Redirect, чтобы сохранить POST

  • `302 кэшируется браузером` — Багованный сервер выставил Cache-Control: max-age=... на редирект. Добавьте Cache-Control: no-cache и очистите кэш браузера

  • `302 в продакшене, но не локально` — Обычно CDN или балансировщик нагрузки добавляет редиректы. Тестируйте напрямую против origin, чтобы изолировать

Заметка

Если 302 появляется неожиданно, самый быстрый шаг отладки — curl -I <url> напрямую к origin-серверу (минуя CDN). Если origin возвращает 200 напрямую, 302 добавляется вашим CDN, прокси или балансировщиком.

Циклы редиректов 302: как диагностировать

Цикл редиректов возникает, когда URL A возвращает 302 к URL B, а URL B возвращает 302 обратно к A. После 20 хопов (в Chrome и Firefox) браузер показывает ERR_TOO_MANY_REDIRECTS и сдаётся.

Самая частая причина — конфликт SSL/HTTPS между CDN (например, Cloudflare) и origin-сервером: CDN подключается к origin по HTTP, origin делает редирект HTTP→HTTPS, CDN снимает HTTPS и снова подключается по HTTP — бесконечный цикл.

bash
# Пройти всю цепочку (ограничить 10 хопами для избегания бесконечных циклов)
curl -ILs --max-redirs 10 https://example.com 2>&1 | grep -i 'HTTP/\|location:'

# Пример цикла:
# HTTP/2 302
# location: http://example.com/
# HTTP/1.1 302 Found
# Location: https://example.com/
# HTTP/2 302
# location: http://example.com/  <-- цикл подтверждён

Если видите два URL, чередующихся в заголовках Location, вы подтвердили цикл 302. Полное руководство см. в нашем посте ERR_TOO_MANY_REDIRECTS. Проверщик редиректов DNS Robot отслеживает всю цепочку из нейтральной локации и останавливается в точке цикла.

Лучшие практики для кода статуса 302

Правильная отправка 302 Found помогает избежать большинства ошибок, с которыми сталкиваются разработчики при реализации редиректов:

  • Всегда включайте заголовок Location — 302 без Location невалиден и отрисовывается как пустая страница

  • Всегда задавайте Cache-Control: no-cache — Иначе некоторые браузеры кэшируют редирект на сессию, нарушая «временный» контракт

  • Используйте абсолютные URL в Location — https://example.com/new однозначен; /new работает, но может сломаться за прокси, меняющими хост

  • Держите редиректы в одном хопе — A → 302 → B нормально; A → 302 → B → 302 → C замедляет загрузку и размывает сигналы

  • Не делайте редирект с POST на другую страницу через 302 — Используйте 303 (намеренный GET) или 307 (сохранение POST)

  • Аудитируйте редиректы ежемесячно — Старые временные редиректы часто переживают свою причину. Проверяйте через Redirect Checker

  • Переключайтесь на 301, когда перемещение становится постоянным — Не оставляйте постоянное перемещение в 302 дольше нескольких недель

Поведение браузера и кэша

Разные браузеры и посредники обрабатывают HTTP 302 немного по-разному. Знание особенностей экономит время отладки:

КлиентПоведение по умолчанию для 302Кэш по умолчанию
Chrome / EdgeАвто-следование, меняет POST→GETНе кэшируется, если заголовки не указывают
FirefoxАвто-следование, меняет POST→GETНе кэшируется, если заголовки не указывают
SafariАвто-следование, меняет POST→GETЧуть более агрессивное кэширование редиректов
curl (по умолчанию)НЕ следует — показывает 302 + LocationБез кэша
curl -LСледует до --max-redirs (по умолч. 50)Без кэша
wget (по умолчанию)Авто-следование до --max-redirect=20Без кэша
GooglebotСледует, трактует как временный сигналПерекраулит оригинальный URL

Чтобы проверить поведение редиректов в крайних случаях (методы POST, бесконечные циклы, наличие заголовков), Проверщик HTTP-заголовков DNS Robot показывает сырой ответ без переписывания метода на стороне браузера. Подробнее о временных редиректах в документации MDN и спецификации RFC 9110.

Advertisement

Отследите любую цепочку редиректов за секунды

Используйте бесплатный Проверщик редиректов DNS Robot, чтобы инспектировать каждый хоп цепочки — коды статуса, заголовки Location и финальное назначение с нейтрального сервера (без браузерного кэша).

Попробовать Проверщик редиректов

Advertisement

Часто задаваемые вопросы

Код статуса 302 (HTTP 302 Found) означает, что запрашиваемый ресурс временно находится по другому URL, указанному в заголовке Location ответа. Клиент должен проследовать редиректу для этого запроса, но продолжать использовать оригинальный URL для будущих запросов. Это временный аналог 301 Moved Permanently.

Связанные инструменты

Redirect CheckerHTTP Headers CheckSSL Certificate CheckDNS Lookup

Похожие статьи

ERR_TOO_MANY_REDIRECTS: как исправить (все браузеры)HTTP-ошибка 503 Service Unavailable: причины и способы исправленияHTTP-ошибка 500 Internal Server Error: причины и способы исправленияОшибка 403 Forbidden: Что Она Означает и Как Исправить

Содержание

  • Что такое код статуса HTTP 302?
  • Структура ответа 302
  • 302 vs 301 vs 307 vs 308: какое перенаправление выбрать?
  • Когда использовать редирект 302?
  • Как отправить код статуса 302
  • Как проверить код статуса 302
  • Редиректы 302 и SEO
  • Почему 302 меняет POST-запросы на GET
  • Частые проблемы с 302 и как их исправить
  • Циклы редиректов 302: как диагностировать
  • Лучшие практики для кода статуса 302
  • Поведение браузера и кэша
  • Часто задаваемые вопросы