新しいHTTPステータスコード「4xx Preliminary Request Denied」の提案仕様

新しく400番台のステータスコードを定義する『The Preliminary Request Denied HTTP Status Code』という提案がCloudflareのMark Nottingham氏から提出されています。

4xx Preliminary Request Denied

このステータスコードは、サーバーがprefetchやpreloadのリクエストを拒否していることを示す HTTP ステータス コードです。具体的なステータスコードはまだ未定です。

なお、Preliminary requestとは Sec-Purposeヘッダに"prefetch"が指定されたリクエストのことです。

背景

ブラウザによって将来必要なリソースを投機的にフェッチする prefetch が使われるようになっています。

状況によっては次のようなシチュエーションがあると述べられています

  • prefetchすることがパフォーマンスに悪影響があるとサーバ側が知っている
  • 現時点では、Preliminary requestに適切な応答が出来ないため、そのリソースが必要になった際に改めてリクエストしてほしい

こういったときに今までは専用のステータスコードがなかったため、サーバとしてそのようなことを表現することは出来ませんでした。

2022年頃から専用のステータスコードを用意スべきか?という議論は有りましたが、今年になって改めてステータスコードを定義しようという動きがあったようです。

Draftの著者でもあるmnot氏は 503ステータスコードが使われることで、実際に混乱が起こっている旨のコメントをしており。それが今回の提案の動機となっています

これはお客様とのやり取りに基づくもので、上記の通りお客様にご迷惑をおかけしております。Cloudflareでは、この状況をより適切にお知らせし、混乱を避けるため、積極的に改善策を模索しております。

github.com