Client HTTP/2 dapat menggunakan ulang satu secured connection untuk request ke lebih dari satu origin ketika server authoritative untuk origin-origin tersebut. Namun, sebuah request tetap dapat mencapai server instance yang connection context-nya tidak sesuai dengan target URI. 421 Misdirected Request ada untuk boundary ini: server menolak routing context, bukan memperlakukan target resource itu sendiri sebagai tidak ada.
Perbedaan ini memisahkan resource semantics dari connection authority. Response 421 berarti server ini, pada path atau connection context ini, tidak mampu atau tidak bersedia menghasilkan authoritative response untuk target URI. Itu tidak berarti resource telah dihapus, method-nya dilarang, atau request representation tidak valid.
Connection reuse dapat melintasi URI authority
HTTP/2 mengizinkan koneksi ke origin server digunakan ulang untuk request yang membawa URI authority component berbeda ketika server authoritative untuk semuanya. Untuk HTTPS, reuse juga bergantung pada certificate validity bagi host dalam URI baru.
Satu certificate dapat mencakup beberapa hostname. Jika a.example.test dan b.example.test resolve secara kompatibel dan certificate yang diberikan pada koneksi valid untuk keduanya, client dapat memiliki dasar protocol untuk mengirim request bagi kedua origin melalui satu koneksi HTTP/2.
TLS connection
certificate valid for:
a.example.test
b.example.test
HTTP/2 stream 1 -> https://a.example.test/orders
HTTP/2 stream 3 -> https://b.example.test/profileTransport connection dibagi, tetapi origin tetap berbeda. HTTP authority rule menentukan apakah peer dapat bertindak untuk setiap target URI; multiplexing tidak melebur resource menjadi satu origin.
Ini adalah constraint utama dalam connection coalescing. Reuse mengurangi connection setup dan dapat mengonsolidasikan traffic, tetapi setiap origin tambahan tetap memerlukan authority basis yang valid.
TLS authority dan backend routing dapat tidak selaras
Deployment dapat memenuhi certificate check pada connection edge sementara request dirutekan secara internal berdasarkan informasi yang dibentuk saat connection setup.
Bayangkan TLS terminator yang memilih backend dari Server Name Indication. Client membuka koneksi menggunakan a.example.test. Certificate juga valid untuk b.example.test, sehingga kemudian client menggunakan kembali koneksi tersebut untuk request dengan target authority b.example.test.
client
|
| TLS SNI: a.example.test
v
edge terminator
|
| selected backend A
v
backend A
later on the same connection:
:authority = b.example.testClient dapat memiliki certificate basis yang valid untuk reuse sementara edge sudah mengikat koneksi ke backend A. Jika backend A tidak dikonfigurasi untuk melayani b.example.test, memproses request begitu saja akan melintasi application routing boundary.
Response 421 memberi receiving server jalur penolakan yang tepat. Target mungkin valid pada koneksi lain walaupun tidak valid pada connection context saat ini.
421 bukan pengganti 404
404 Not Found berkaitan dengan target resource: origin server tidak menemukan current representation atau tidak bersedia mengungkapkannya. 421 Misdirected Request berkaitan dengan server atau connection context yang digunakan untuk mencapai target URI.
Perbedaannya terlihat ketika fresh connection mengubah hasil.
request for https://b.example.test/profile
|
v
coalesced connection selected via a.example.test
|
v
421 Misdirected Request
same target over a connection specific to b.example.test
|
v
200 OKMengembalikan 404 pada pertukaran pertama akan salah menggambarkan kegagalan. Resource lookup belum tentu bermasalah; request datang melalui context yang tidak dapat secara authoritative melayaninya.
Pemisahan yang sama berlaku untuk 403 Forbidden. Authorization dapat sepenuhnya valid sementara connection authority tidak. Server tidak seharusnya mengubah routing-context rejection menjadi application permission result.
Pengecualian retry terikat pada koneksi yang berbeda
HTTP mengizinkan client yang menerima 421 melakukan retry melalui koneksi berbeda, termasuk fresh connection khusus untuk target origin atau alternative service yang sesuai. Specification mengizinkan ini bahkan ketika request method tidak idempotent.
Pengecualian ini sempit. Dasarnya adalah makna 421: server pertama menolak request sebagai misdirected, bukan menjalankan target operation. Perubahan yang berguna bukan sekadar mencoba lagi, tetapi mencoba pada connection context lain.
Mengulang request yang sama pada unsuitable coalesced connection yang sama dapat menghasilkan penolakan serupa. Client perlu menghindari pemilihan koneksi yang menyebabkan authority failure tersebut saat retry.
Perilaku ini berbeda dari generic transient-error retry logic. Response memberi structural information tentang routing. Connection pool yang memperlakukan 421 sebagai ordinary application error dapat terus menempatkan target origin pada koneksi yang sudah ditolak server untuk origin tersebut.
Proxy tidak boleh menghasilkan 421
HTTP secara eksplisit melarang proxy menghasilkan response 421. Status code ini milik origin server, atau gateway yang bertindak atas nama origin server, ketika menolak target URI yang tidak sesuai dengan configured origin set atau connection context-nya.
Pembatasan ini menjaga sinyal tetap terkait origin authority, bukan generic forwarding trouble. Conventional proxy memiliki status code lain untuk kegagalan selama forwarding request.
Perbedaan ini penting pada layered deployment karena kata “server” dapat menggambarkan beberapa role. Reverse proxy yang bertindak sebagai origin-facing endpoint dapat ikut dalam origin authority decision. Forwarding proxy tidak otomatis berhak mengeluarkan 421 hanya karena route selection gagal.
Host coverage perlu tetapi tidak cukup
Untuk HTTPS connection reuse, certificate validity bagi origin baru wajib, tetapi certificate coverage saja tidak memaksa server menerima request untuk setiap host yang tercakup pada setiap eligible connection.
Certificate membuktikan cryptographic authority relationship menurut validation rule client. Server configuration dapat menetapkan operational boundary yang lebih sempit. Virtual-host mapping, tenant isolation, client-certificate selection, atau connection-specific routing dapat membuat satu koneksi tidak sesuai untuk origin yang tetap tercakup certificate.
Gap inilah yang dapat diekspos 421. Client memiliki cukup evidence untuk mempertimbangkan reuse, tetapi receiving endpoint memiliki deployment information yang menunjukkan request tidak boleh dilayani dalam context tersebut.
Memperlakukan certificate subject name sebagai peta backend routing yang lengkap karena itu dapat menghasilkan asumsi salah. Certificate authority dan application routing adalah constraint yang berhubungan, tetapi bukan configuration object yang identik.
HTTP/3 mempertahankan masalah authority yang sama
HTTP/3 juga mengizinkan connection reuse di berbagai URI authority ketika certificate valid untuk origin baru dan authority requirement lainnya terpenuhi. Transport-nya berubah dari HTTP/2 berbasis TCP menjadi QUIC, tetapi multi-origin authority boundary tetap ada.
Server yang tidak ingin koneksi HTTP/3 digunakan ulang untuk origin tertentu juga dapat merespons dengan 421. Status code ini merupakan bagian dari semantik HTTP, bukan mekanisme perbaikan khusus TCP.
Portabilitas ini penting. Kegagalan yang terlihat bukan “TCP socket yang salah”, melainkan “request ini tiba melalui connection context yang ditolak server untuk target URI ini”. Formulasi tersebut tetap berlaku walaupun transport protocol berubah.
Alternative service menambahkan jalur authority lain
Origin dapat mengiklankan alternative service agar client mengakses origin melalui network endpoint lain. Alternative endpoint tetap bertindak atas nama origin asli; penggunaannya tidak mengubah target origin yang disebut oleh request semantics.
Jika alternative service mengembalikan 421, alternative-service specification mewajibkan client menghapus cached alternative terkait untuk origin tersebut. Client kemudian dapat mencoba alternative lain atau origin itu sendiri sesuai protocol rule yang berlaku.
Ini adalah contoh lain bahwa 421 membawa routing information, bukan resource state. Mempertahankan rejected alternative di cache berarti mempertahankan path yang sudah dinyatakan server tidak sesuai.
Response karena itu memiliki konsekuensi bagi connection dan route selection state. Application code di atas HTTP stack mungkin hanya melihat retry atau final failure, sementara protocol implementation memperbarui endpoint mana yang dianggap valid bagi origin tersebut.
421 mengekspos deployment boundary yang dapat disembunyikan certificate
Multi-origin connection reuse bekerja karena satu secured connection dapat membentuk authority untuk lebih dari satu origin dalam kondisi tertentu. Deployment routing dapat lebih sempit daripada authority set yang terlihat dari luar.
421 Misdirected Request adalah protocol escape hatch untuk mismatch tersebut. Ia memungkinkan server menolak route saat ini tanpa menyatakan bahwa target resource tidak ada atau dilarang. Client yang compliant dapat merespons dengan memilih connection context berbeda alih-alih mengubah application meaning request.
Hal ini juga menjadikan 421 diagnostic signal yang berguna. Response 421 berulang dapat mengarah pada ketidaksesuaian antara certificate coverage, DNS placement, connection coalescing, SNI-based routing, alternative-service state, dan virtual-host configuration.
Status code ini tidak memperbaiki layer-layer tersebut. Ia mempertahankan boundary-nya: authority yang cukup untuk mencoba connection reuse tidak menjamin setiap server instance yang dicapai melalui koneksi tersebut dikonfigurasi untuk melayani setiap eligible origin.