Slate Errors

Success (2xx)

203

Non-Authoritative Information

— 公式ではない情報

まずは確認: よくある原因 TOP3

  1. 中間プロキシがレスポンスを書き換えた
    ヘッダや本文の一部が中継機器の手で変えられている
  2. トランスフォーミング CDN/プロキシ経由
    画像最適化や HTML 圧縮を挟んでいる構成
  3. フィルタリングサービスを通したレスポンス
    親会社のフィルタや会社のプロキシが内容を加工

うまくいった証

203 は「リクエスト自体は成功したけれど、君に届いた内容は本来のサーバーから直接ではなく、途中で誰かが手を加えた可能性があるよ」と教えてくれるサインです。 プールに例えると、自分のコーチからではなく、別のコーチが「だいたいこんな感じだったよ」と伝言で伝えてくれる——あの「直接ではない」感触です。

実務でこのコードに出会うことは多くありませんが、CDN や会社プロキシなどが応答を加工する構成では出ることがあります。挙動としては 200 とほぼ同じで、注意書きが付いた成功と理解して大丈夫です。

プールからのひとこと

プールサイドで自分のコーチがいないとき、別の先生に「あの先生はどう言ってた?」と尋ねると、「たぶんこう言ってたと思うよ」と少し含みを持たせた答えが返ってくることがあります。本人ではないからこその、控えめな伝え方。

203 もそれに似ていて、「本物の情報源からそのまま」ではない、という前置きをつけて成功を返している状態。クライアントは中身を信用してよいけれど、出所が中継経由だということを把握できます。

次への一歩

うまくいった、次はこうしてみよう:

  1. レスポンス内容をそのまま使ってよい:基本は 200 と同じ扱いで問題ない
  2. 重要な値はオリジンと比較:精緻なデータが必要なら直接アクセスを検討
  3. どの中継機器が変換しているか把握ViaX-Cache 系ヘッダで追える
  4. 不要な変換は剥がす (管理者向け):CDN/プロキシで意図せぬ書き換えがあれば設定を見直す

実際にはこう見える

$ リクエスト

curl -i https://example.com/some/path

↓ レスポンス

HTTP/1.1 203 Non-Authoritative Information
Content-Type: text/html; charset=utf-8

<!DOCTYPE html>
<html><body><h1>203 Non-Authoritative Information</h1></body></html>

似ているケース

もっと知りたい