HTTPステータスコードとヘッダー132種
404や500が何を意味するのか、Content-TypeやCache-Controlが何をするのかを一行でまとめました。
ステータスコード
1xx 情報4
進行中の知らせです。本当の応答はこの後に来ます。
2xx 成功10
要求が問題なく通ったという意味です。
3xx 転送8
別の場所へ行くようにという意味です。恒久か一時かで分かれます。
4xx 要求の誤り29
要求側に問題があるという意味です。同じものを送ればまた失敗します。
5xx サーバーの誤り11
サーバー側に問題があるという意味です。しばらくして試す価値があります。
ヘッダー
リクエストヘッダー55
ブラウザーがサーバーへ送るときに付けるヘッダーです。
レスポンスヘッダー56
サーバーがブラウザーへ返すときに付けるヘッダーです。
双方で使う22
要求にも応答にも付きうるヘッダーです。
読み方
- ステータスコードは最初の数字が意味を決めます。4なら要求側、5ならサーバー側の問題です。
- 404は「ない」、403は「あるが許されない」です。取り違えると原因探しに時間がかかります。
- ヘッダー名は大文字小文字を区別しません。Content-Typeとcontent-typeは同じヘッダーです。
- キャッシュやCORSの問題はたいていヘッダー一行で決まります。ブラウザーのネットワークタブでそのまま見られます。
よくある質問
Q404と403は何が違いますか。
404はその住所に何もないという意味で、403はあるけれど見る権限がないという意味です。ただし資源の存在自体を隠すためにわざと404を返すサーバーもあります。
Q500エラーのとき自分にできることはありますか。
5で始まるコードはサーバー側の問題なので、たいていは待つしかありません。ただし502や504は前段と後段のあいだの問題で、少し待って再試行すると解けることが多いです。
Q301と302はどう選びますか。
住所を完全に移したなら301、一時的に別へ送るなら302です。301はブラウザーも検索エンジンも長く覚えるため、取り消しにくい点に注意してください。
Qヘッダー名は大文字小文字を区別しますか。
区別しません。Content-Typeとcontent-typeは同じヘッダーで、HTTP/2以降は小文字で送ると定められています。
QCORSエラーはなぜ起きますか。
ページが別出所の応答を読もうとしたとき、サーバーがAccess-Control-Allow-Originで許可していなければブラウザーが遮ります。サーバーは応答していて、ブラウザーが本文をコードに渡さないだけなので、ネットワークタブには見えるのにスクリプトからは読めないという状態になります。