HTTPステータスコード
番号や名前で検索できます。各コードの意味と使いどころが分かります。
- ブラウザ上で動作します — テキストはどこにも送信されません
- 登録不要、利用回数の上限なし、何度でも無料で使えます
仕組み
ステータスコードの多くは自明ですが、いくつかは、特に名前が似ているものは本当に紛らわしいものです。番号、forbiddenのような単語、または4xxと入力すると、その分類全体を表示します。
401と403、誰もが取り違える2つ
401 Unauthorizedは、実際には未認証を意味します。サーバーはあなたが誰か分からず、認証情報を送れば解決するかもしれません。403 Forbiddenは、サーバーがあなたが誰かを正確に把握していて、それでも許可されないという意味です。名前は歴史的なもので分かりにくいのですが、一方はログインを促し、もう一方は促さないという違いは重要です。
301と302の違い、そしてSEOで重要な理由
301は恒久的で、評価のシグナルを新しいアドレスに引き継ぎます。302は一時的で、評価は元のアドレスに残ります。恒久的な移転に302を使うのはよくある間違いで、気づかないうちに大きな損失になります。307と308は現代版の同等のコードで、さらにメソッドが変更されないことを保証します。つまりPOSTはPOSTのままで、301と302では歴史的にそうとは限りませんでした。
バリデーションには422
400 Bad Requestは、サーバーがリクエストをまったく理解できなかったという意味です。422 Unprocessable Contentは、完全に理解した上で内容が間違っているという意味で、たとえば必須項目の欠落や無効なメールアドレスです。多くのAPIはバリデーション失敗に422を返すべきですが、習慣で400を返しています。
コードの分類
1xxは情報、2xxは成功、3xxはリダイレクト、4xxはクライアント側の問題、5xxはサーバー側の問題です。障害の際に責任の所在を切り分けるときは、この最後の区別を使ってください。4xxの急増は呼び出し側が何か間違ったことをしていることを、5xxの急増はあなた側に問題があることを意味します。
418
I'm a teapot(私はティーポット)は1998年のエイプリルフールのジョークが元で、実装から削除しようとした際に抗議が起きたため、のちに本格的に標準化されました。実用目的ではありませんが、仕様の正式な一部です。
HTTPステータスコードに関するよくある質問
401と403の違いは何ですか?
401は未認証、つまりサーバーがあなたが誰か分からない状態です。403は、誰か分かった上で、それでも許可されていない状態です。
301と302のどちらを使うべきですか?
恒久的な移転には301を使います。評価も引き継がれます。一時的な移転には302です。HTTPメソッドを変えてはならない場合は、308と307を使います。
バリデーションエラーにはどのコードを返すべきですか?
422 Unprocessable Contentです。400は、リクエストがまったく理解できなかった場合です。
418は実在しますか?
はい。1998年のエイプリルフールのジョークから始まり、実際に標準化されていますが、実用目的ではありません。
502は何を意味しますか?
プロキシが、その背後のサーバーから無効な応答を受け取ったことを意味します。多くの場合、アプリケーションが停止しているか、クラッシュしています。