要約

  • 404は一時的な不在、非開示、状態不明を区別しない。410は、オリジンがアクセス終了と長期継続の見込みを裏づけられる場合にだけ、より狭く強い判断を伝える。
  • その判断はリンク整理や有限のキャッシュ再利用を助けるが、アーカイブや他サイトの引用を消す命令でも、すべての複製が失われた証明でもない。

「見つからない」の後に残る問い

ある URL への要求が失敗したとき、監視側が直接知るのは現在の結果だけである。公開作業が遅れているのかもしれない。設定が壊れたのかもしれない。存在を明かしたくない対象なのかもしれない。あるいは期間限定のページが正式に役目を終えたのかもしれない。画面上の空白は似ていても、次に取るべき行動は異なる。

1996年の HTTP/1.0 を記録したRFC 1945には、一般に認識されるコードとして404があり、410はなかった。404の説明は、不在が一時的か恒久的かを示さないと明記していた。これは情報不足を情報として保存する設計である。知らないサーバーに未来を断言させない。

しかし、運用者がすでに廃止を決めた後まで曖昧さを続ければ、判断の費用は外部へ移る。リンク検査器は失敗回数から寿命を推測し、編集者は再確認を繰り返し、クローラーは同じ要求を送り続ける。オリジンが持つ決定済みの事実を共有できなければ、各受信者が異なる推測規則を作ることになる。

410はライフサイクル情報を配送した

1997年1月の HTTP/1.1 仕様RFC 2068は410 Gone を定義した。最初の記述では、要求された資源はもはや利用できず、転送先も不明であり、この状態は恒久的とみなすべきだとされた。リンクを編集できるクライアントは、利用者の承認後に参照を削除する。サーバーが恒久性を判断できなければ404を使う。

この追加で、否定応答の出所が二つに分かれた。404は現在の表現を出せないという控えめな報告である。410は、終了日、編集判断、人員の離任、運用台帳など、オリジン側が所有する状態に基づく追加判断である。コードそのものが恒久性を生むのではない。所有された判断を相互運用できる形にする。

利用者承認という条件も重要だった。オリジンは遠隔文書を書き換えない。相手のクライアントが自分のリンクを管理し、必要なら人が決める。プロトコルは権限を移転せず、離れた所有者の協調を助けた。

「永久」は「可能性が高い」へ調整された

RFC 2616は410を Web 保守のための応答として詳しく説明した。資源が意図的に利用不能で、サーバー所有者が遠隔リンクの撤去を望んでいる場合である。一方で、すべての恒久的不在に410を付ける必要も、表示を一定期間維持する必要もないとした。

その後のRFC 7231と現行のRFC 9110は、状態を「恒久的である可能性が高い」と表現する。断言が弱くなったのではなく、判断の射程が正確になった。移行漏れは後で見つかる。廃止ページが復活することもある。後継 URI が定まることもある。410は現時点の強い見通しであり、将来を固定する契約ではない。

現行404はさらに、現在の表現が見つからない場合だけでなく、オリジンが存在を開示したくない場合も含む。期間については答えない。したがって410への変更はエラーページの色替えではない。解釈の幅を狭め、その分だけ送信者の説明責任を増やす。

キャッシュは撤去判断を一時的に増幅する

現代の仕様では410はヒューリスティックにキャッシュ可能である。RFC 9111の一般規則により、明示的な期限がなくても、キャッシュは条件に従って有限の鮮度期間を計算できる。鮮度が残る間はオリジンへ再照会せず応答を再利用できる。

この性質は退役 URL への反復負荷を減らし、保守ツールへ安定した材料を渡す。同時に、誤った410の修正を遅らせる。オリジンで200を復旧しても、各エッジの新鮮な410が直ちに消えるとは限らない。キャッシュ指令、パージ経路、複数地点からの復旧試験は、ステータス選択と同じ変更計画に含める必要がある。

ヒューリスティックな鮮度は無期限ではない。また、キャッシュされた応答は保存装置からの物理削除を証明しない。キャッシュが持つのは、ある時点におけるアクセス判断である。

現在の入口を閉じても、過去の記録は所有できない

オリジンは自分の URI に対する現在の応答を決める。外部サイトは自分の引用を、検索サービスは自分の索引を、アーカイブは自分の保存物を管理する。410は共通の判断材料を与えるが、これらの主体をオリジンの配下に置かない。

だから410は、対象が過去に存在しなかったという証明にならない。応答者の正当な権利を認証せず、法的な消去命令にもならず、すべての複製が失われたとも言わない。現在のオリジンが Gone を返し、別の機関が過去の状態を保持することは両立する。

後継があるなら301や308による移転を検討できる。法的な理由で利用不能なら451が別の説明を担う。410が引き受けるのは、現在の入口を後継指定なしに退役させ、リンク保守へ知らせるという限定された仕事である。

強い否定には、取り消し設計が要る

適切な運用は、誰が退役を承認したか、恒久性の根拠は何か、後継は本当にないか、キャッシュに何を許すか、誤りをどう復旧するかを記録する。組織内の重要リンクと、把握できる外部引用も別に追跡すべきである。

410の利点は、沈黙から各自が推測していた結論を、責任主体のある信号へ変えたことにある。欠点は、その信号を受けた第三者が自律的に行動することだ。サーバーは翌日に応答を戻せる。しかし、別の編集者が消したリンクを遠隔から復元することはできない。Gone の歴史は、分散システムで強い事実を共有するとき、共有範囲と支配範囲を同一視してはならないと教える。

出典と限界

IANA HTTP ステータスコード登録簿は現在、410を「Gone」として掲げ、RFC 9110の15.5.11節を参照先としている。本稿はこのほかRFC 1945RFC 2068RFC 2616RFC 7231RFC 9111に基づく。これらは仕様と登録状態を示すもので、現在のすべてのブラウザー、クローラー、検索サービス、フレームワーク、キャッシュ、アーカイブの実装を示す調査ではない。