よく使う HTTP のステータスコードを説明してください

百の位で 5 つの組に分けてから、200、201、301、302、304、400、401、403、404、500 を場面と結んで答える問い。4xx と 5xx の分け方が芯です。

こう聞かれます

  • 「知っている HTTP のステータスコードと、その意味を教えてください」
  • 「401 と 403 の違いは何ですか」「404 と 500 はどちらが誰の問題ですか」
  • 「API で入力が足りないとき、何番を返しますか」(作った物から、裏で知識を確かめる形)

面接官が見ている点

  • 番号を覚えているかより、百の位で組を分けて考えられるか
  • 4xx は送った側、5xx はサーバー側、という切り分けで、不具合の調べ始めを決められるか
  • 401 と 403、301 と 302 のような、似た番号の違いを言えるか

短い答え

  • ステータスコードは結果を表す 3 桁の数で、百の位が 2 なら成功、3 なら別の所へ、4 なら送った側の誤り、5 ならサーバー側の失敗です。
  • よく使うのは、成功の 200、作れた 201、移った先を示す 301 と 302、変わっていない 304 です。
  • 誤りでは、入力の不備の 400、未ログインの 401、権限が無い 403、見つからない 404、サーバーの失敗の 500 をよく使います。

少し詳しい答え

百の位で 5 つの組

1xx は途中の知らせ、2xx は成功、3xx は別の所を見てという案内、4xx は送った側の誤り、5xx はサーバー側の失敗です。知らない番号が返っても、百の位を見ればおおよその意味が分かります。

番号ごとの使いどころ

  • 200 OK 頼んだ物が返った、という普通の成功です
  • 201 Created POST で新しく作れたときに返します。作った物の住所を Location のヘッダーで添えることが多いです
  • 301 と 302 どちらも別の URL へ移す案内です。301 はずっと移った、302 は今だけ移った、という違いです。サイトの住所を引っ越したら 301 を使います
  • 304 Not Modified 前に受け取った物から変わっていない、という返事です。本文は付かず、ブラウザは手元のキャッシュを使います
  • 400 Bad Request 入力の形がおかしい、必須の値が無い、など送った側の誤りです
  • 401 と 403 401 は「誰か分からない」(ログインしていない、トークンが切れた)、403 は「誰かは分かったが、その操作は許していない」です。名前は Unauthorized ですが、意味は認証 (本人の確かめ) の失敗です
  • 404 Not Found その住所に物が無い、という返事です
  • 500 Internal Server Error サーバーの中で予期しない失敗が起きた、という返事です。送った側が直しても解けません

4xx と 5xx を分ける意味

4xx なら送る内容や手順を直せば解ける見込みがあります。5xx ならサーバーのログを見ます。画面に出す文も分けます。4xx では「入力を直してください」、5xx では「時間をおいてもう一度」のように、利用者が取れる行動を案内します。

作った物と結ぶなら、たとえば「API で、入力の不備は 400、他人の投稿を消そうとしたら 403 を返し、画面では番号ごとに出す文を変えた」のように話します。

よくある間違い

  • 401 と 403 を入れ替えて使うログインしていない人に 403 を返すと、ログインの画面へ案内する処理が動きません。認証が無いなら 401、権限が足りないなら 403 です
  • 失敗しても 200 を返し、本文に「エラー」と書く呼ぶ側が番号で成否を見分けられず、fetch の response.ok も true になります
  • 入力の誤りで 500 を返す送った側の誤りを 5xx にすると、サーバーが壊れたように見え、調べる人が迷います。入力は先に確かめて 4xx で返します

深掘りの問い

  • 「権限の無い人に、物があることさえ知られたくないときは」 403 の代わりに 404 を返して、在るかどうかを隠す設計もある、と答えます
  • 「301 と 302 を間違えると何が困りますか」 301 は恒久の移動なので、ブラウザがキャッシュして次から直接新しい住所へ行くことがあり、検索エンジンも新しい住所に置き換えます。一時の移動に使うと戻しにくい、と答えます
  • 「fetch で 404 が返ったとき、catch に入りますか」入りません。fetch が失敗にするのは通信できなかったときで、404 や 500 は response.ok が false になるだけなので、自分で確かめます

確認日 2026年10月23日

技術面接問題の一覧へ戻る