HTTPQUERY
Русский

421 Misdirected Request

Применение

Ошибка 421 Misdirected Request указывает, что сервер не в состоянии сформировать ответ. Этот статус отправляется вследствие повторного использования соединения, когда сервер не хочет, чтобы клиенты повторно использовали соединения. В ответ клиент пытается повторно отправить запрос по другому соединению.

Это также происходит при выборе альтернативной службы (Alt-Svc).

Этот статус не генерируется прокси-серверами.

Влияние на SEO

Google рекомендует возвращать 421, чтобы отказаться от сканирования Googlebot по HTTP/2. Googlebot сканирует как по HTTP/1.1, так и по HTTP/2. Ответ 421 на запросы Googlebot по HTTP/2 прекращает сканирование сайта по HTTP/2. Страницы, возвращающие 421, не индексируются, а ранее проиндексированные URL, возвращающие этот код, удаляются из результатов поиска.

Пример

Клиент запрашивает ресурс, и сервер отвечает 421 Misdirected Request, потому что запрос пришёл по соединению, не предназначенному для этого хоста.

Запрос

GET /tech-news HTTP/2
Host: example.com

Ответ

HTTP/2 421 Misdirected Request

Как исправить

Повторите запрос по новому выделенному соединению с нужным источником. Браузер или клиент открывает свежую сессию TCP/TLS вместо повторного использования существующего мультиплексированного соединения HTTP/2.

На стороне сервера убедитесь, что TLS-сертификат охватывает каждое имя хоста, которое обслуживает сервер. Несовпадение между значением SNI (Server Name Indication) и заголовком Host — самая частая причина.

Когда nginx выступает обратным прокси к бэкенду Apache по HTTPS, включите передачу SNI, чтобы Apache видел правильное имя хоста:

В Apache убедитесь, что у каждого виртуального хоста есть соответствующий ServerName и действительный сертификат. Ужесточённые проверки SNI в недавних выпусках Apache отклоняют запросы, в которых имя хоста из SNI и заголовок Host противоречат друг другу.

Для CDN и балансировщиков нагрузки, заново шифрующих трафик к источнику, убедитесь, что при TLS-рукопожатии с вышестоящим узлом передаётся правильное значение SNI. Cloudflare и аналогичным службам нужно, чтобы сертификат источника перечислял все обслуживаемые имена хостов.

Отключите объединение соединений HTTP/2 на сервере, когда несколько доменов используют один IP, но разные сертификаты. Каждому домену нужно отдельное соединение.

Примеры кода

.NET

HttpStatusCode.MisdirectedRequest

Rust

http::StatusCode::MISDIRECTED_REQUEST

Rails

:misdirected_request

Go

http.StatusMisdirectedRequest

Symfony

Response::HTTP_MISDIRECTED_REQUEST

Python3.5+

http.HTTPStatus.MISDIRECTED_REQUEST

Apache HttpComponents Core

org.apache.hc.core5.http.HttpStatus.SC_MISDIRECTED_REQUEST

Angular

@angular/common/http/HttpStatusCode.MisdirectedRequest