Retry-Afterのスコープを指定するRetry-Scopeヘッダ

一時的にサービスが使用できないことを示す503レスポンスを返す際に、Retry-Afterレスポンスヘッダを付けることで待ってほしい時間を伝えることができます。

Retry-Afterレスポンスヘッダは下記の用に秒で指定できます。

Retry-After: 120

しかし、この503ステータスやRetry-Afterヘッダは元々送ったリクエストに対してのものです。

サービスが一時的に使用できない場合は、その他のURLに対してもリクエストを送るのは待ってほしい場合が多いでしょう。そこで、Retry-Scopeヘッダという話が出てきました。

Retry-Scopeヘッダ

以前、「HTTP/1.1 (RFC 7230 〜 7235) の改訂作業がはじまる」で書いたように、HTTPセマンティクスの再改定作業が進められています。その中で、上記のようなRetry-Afterヘッダのスコープの議論がありました(Github Issue)。

この議論の後、「Retry-Scope header field」という提案仕様が書かれています(MLで共有されていますが、正式にinternet-draftとしては提出されていません)。

このRetry-Scopeヘッダでは、Retry-Afterヘッダを適応するスコープを指定します。503レスポンスヘッダを返したURL以外にも、このスコープへのリクエストを待ってもらうことができます。

Retry-Scopeは下記のように使用できます。

   Retry-Scope: /books
   Retry-Scope: https://api.example/

最後に

この議論はまだ始まったばかりですので、仕様として標準化されるかどうか、どのような形になるかはまだまだ分からないところが多いです。