Http Status Codeについてよく見るやつをまとめてみた
こんばんわ。ぽん太です。
よく見るHTTP Status Codeをまとめてみようと思い投稿します。
Status Code全部
超いっぱいありますね。100番台とかアプリ開発で使ったことないです。 200系、400系、500系はよく見ますね。
よく見るやつから行ってみましょう。
あんまり200以外は、帰ってくるとヒヤッとするものが多いですね。
200 OK
殆どの成功レスポンスではこれを応答しましょう。 エラーなく処理が完了した場合、200 OKを応答しましょう。
204 No Content
リクエストを受理して成功したが応答するBODYがない場合はこれをたまに 応答することがあります。
200 OKでBody無しでもいいんじゃないかなと思うんですが。
301 Moved Permanently
サイトが恒久的に移動した場合、移動前のHTTPサーバーではこれを応答しましょう。 そしてヘッダのLocationにURLを入れておくと、ブラウザは自動的にリダイレクトするようになります。
302 Moved Temporarily
一時的なリダイレクトの必要がある場合はこちらを応答しましょう。 301とはブラウザのキャッシュ動作などに差があるはずですね。 要求を受け付けたけど、別のサイトにリダイレクトさせたいときなどにこれを利用していたり。
400 Bad Request
リクエストが不正である場合はこれを返しましょう。 リクエストのフォーマットチェックなどでひっかっかたらこれを応答します。
多分それ以外にも、プログラムでチェックして不正な結果となったことが検出された場合、これを応答するのがよいでしょう。
401 Unauthorized
これは認証に失敗した場合に応答しましょう。 Basic認証などに失敗するとこれが応答されますね。
403 Forbidden
認可されていないリソースに、アクセスされた場合に応答しましょう。 例えば読み込み権限があるが、書き込み権限がない場合などにこれを応答するのが適切でしょう。
404 Not Found
アクセスしたURLにこちらの配置したリソースがない場合に、Webサーバが自動的に応答してくれると思います。404が応答されたらそのURLには何もありません。
405 Method Not Allowed
Apacheのhttpd.cofなどでMethodの禁止設定をしていたMethodでアクセスした場合にこれが応答されると思います。 昔はGETとPOST以外禁止していたような。
500 Internal Server Error
個人的に一番見たくない奴です。内部処理が失敗していますね。 CGIとして動作しているPHPなどが意図せぬエラーになっていたりするとこれが応答されます。
原因を調査して、何とかしないといけない奴です。
502 Bad Gateway
あんまり見ることはないのですが、FireWallとかロードバランサーとかネットワーク機器を 疑いますね。
503 Service Unavailable
サービス利用不可。サービスが一時的に過負荷やメンテナンスで使用不可能の状態です。 負荷であれば、一時対処でapacheを再起動してみたり恒久的にはサーバーを拡張するとか負荷を軽減するとかでしょうね。プログラムの処理が重くて動かない場合は、CPUが100%に張り付いて500が応答される気がするので、WebサーバーのMaxClientWokerが足りていない気がします。
各サーバーのCPUに余裕がある場合は、MaxClientWokerをもっと大きな値にしてみましょう。
504 Gateway Timeout
これもネットワーク機器が死んでいることを疑います。
まとめ
いっぱいありすぎて正直全部を使いこなすのは無理でしょうね。 でも、たまに確認しておかないといつの間にかベストプラクティスが更新されて自分の知識が古くなっていることが あるので基本に忠実に行きましょう!