421 Misdirected Request
Penggunaan
Error 421 Misdirected Request menunjukkan server tidak mampu menghasilkan respons. Status ini dikirim sebagai akibat dari penggunaan ulang koneksi, ketika server tidak menginginkan klien menggunakan ulang koneksi. Sebagai tanggapan, klien mencoba mengirim ulang request melalui koneksi yang berbeda.
Hal ini juga terjadi ketika sebuah layanan alternatif (Alt-Svc) dipilih.
Status ini tidak akan dihasilkan oleh proxy.
Dampak SEO
Google menyarankan pengembalian 421 untuk menolak crawling Googlebot melalui HTTP/2. Googlebot melakukan crawling melalui HTTP/1.1 maupun HTTP/2. Merespons request HTTP/2 dari Googlebot dengan 421 menghentikan crawling HTTP/2 untuk situs tersebut. Halaman yang mengembalikan 421 tidak diindeks, dan URL yang sebelumnya terindeks namun mengembalikan kode ini akan dihapus dari hasil pencarian.
Contoh
Klien meminta sebuah sumber daya dan server merespons dengan 421 Misdirected Request karena request tiba melalui koneksi yang tidak diperuntukkan bagi host ini.
Request
GET /tech-news HTTP/2
Host: example.com
Respons
HTTP/2 421 Misdirected Request
Cara memperbaiki
Coba ulang request melalui koneksi baru yang khusus menuju origin yang dituju. Browser atau klien membuka sesi TCP/TLS yang segar alih-alih menggunakan ulang koneksi multipleks HTTP/2 yang sudah ada.
Di sisi server, verifikasi bahwa sertifikat TLS mencakup setiap nama host yang ditangani server. Ketidakcocokan antara nilai SNI (Server Name Indication) dan header Host adalah pemicu paling umum.
Ketika nginx melakukan reverse proxy ke backend Apache melalui HTTPS, aktifkan penerusan SNI agar Apache melihat nama host yang benar:
Pada Apache, pastikan setiap virtual host memiliki ServerName yang cocok dan sertifikat yang valid. Pemeriksaan SNI yang diperketat pada rilis Apache terbaru menolak request ketika nama host SNI dan header Host saling bertentangan.
Untuk CDN dan load balancer yang mengenkripsi ulang lalu lintas menuju origin, pastikan handshake TLS ke upstream mengirim nilai SNI yang benar. Cloudflare dan layanan serupa memerlukan sertifikat origin yang mencantumkan seluruh nama host yang dilayani.
Nonaktifkan penggabungan koneksi HTTP/2 di server ketika beberapa domain berbagi satu IP tetapi menggunakan sertifikat yang berbeda. Setiap domain memerlukan koneksi tersendiri.
Referensi kode
.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