コンテンツにスキップ

HTTP ステータスコード完全ガイド|よくあるエラーの原因と対処法

カテゴリ:HTTP・Web 開発

API を開発していて 422 が返ってきた。本番で突然 502 が出始めた。リダイレクトが 301 なのか 302 なのかで SEO への影響が変わる。HTTP ステータスコードは Web 開発の共通言語であり、正しく理解することがトラブルシューティングの第一歩です。

ステータスコードの 5 つのカテゴリ

レンジカテゴリ意味
1xxInformationalリクエストを受信し処理中
2xxSuccessリクエスト成功
3xxRedirection追加アクションが必要 (リダイレクト)
4xxClient Errorクライアント側の問題
5xxServer Errorサーバー側の問題

開発者が最もよく遭遇するコード

200 OK — 成功

最も基本的な成功レスポンス。API が期待通りに動いている。

301 Moved Permanently — 永続リダイレクト

URL が恒久的に変わった場合に使う。SEO 上、旧 URL の評価が新 URL に引き継がれるため、サイト移転やHTTPS化で必須。Google は 301 を「シグナルの転送」として扱う。

よくある問題: 301 のつもりで 302 を返しているケース。Apache の Redirect はデフォルト 302。Redirect 301 と明示する。

302 Found — 一時リダイレクト

一時的な転送。A/B テストやメンテナンス中の迂回に使う。SEO 評価は転送されない。

304 Not Modified — キャッシュ有効

ブラウザが If-Modified-SinceIf-None-Match ヘッダで条件付きリクエストを送った結果、リソースが変わっていない場合に返す。ボディは送信されないため帯域を節約できる。

400 Bad Request — リクエスト不正

サーバーがリクエストを解析できない。原因: 不正な JSON、必須パラメータ欠落、Content-Type 不一致。

# よくあるミス: Content-Type を指定していない
curl -X POST https://api.example.com/users -d '{"name":"Alice"}'
# → 400 (Content-Type: application/json が必要)

# 正しい
curl -X POST https://api.example.com/users \
  -H 'Content-Type: application/json' \
  -d '{"name":"Alice"}'

401 Unauthorized — 認証必要

認証情報が無いか無効。Bearer トークンの期限切れ、API Key の誤り。

403 Forbidden — アクセス拒否

認証は通ったが権限が無い。管理者専用エンドポイントに一般ユーザーがアクセスした場合など。401 との違いは「認証の有無」vs「権限の有無」。

404 Not Found — リソースなし

最も有名なエラー。URL のタイプミス、削除されたページ、ルーティング設定ミス。SEO 上は 410 Gone で「意図的に削除した」と示す方が望ましいケースもある。

413 Payload Too Large — サイズ超過

ファイルアップロードで頻出。Nginx の client_max_body_size (デフォルト 1MB)、PHP の upload_max_filesize、API Gateway の制限を確認。

422 Unprocessable Entity — バリデーションエラー

JSON の構文は正しいがビジネスロジック上不正 (メールアドレスの形式が不正、必須フィールドの値が空、など)。REST API のバリデーションエラーはこれを返すのが主流。

429 Too Many Requests — レート制限

短時間にリクエストを送りすぎた。Retry-After ヘッダに待つべき秒数が示される。対策: 指数バックオフ (exponential backoff) を実装。

500 Internal Server Error — サーバー内部エラー

未処理の例外、NULL 参照、設定ファイルの誤り。最も危険なエラー。サーバーログを必ず確認。

502 Bad Gateway — 上流サーバー異常

リバースプロキシ (Nginx) が上流の PHP-FPM / Node.js / Python WSGI に接続できないか不正な応答を受けた。上流プロセスの再起動、メモリ不足、ソケット接続のタイムアウトを確認。

503 Service Unavailable — サービス一時停止

メンテナンス中や過負荷。Retry-After ヘッダを付けてクライアントに待機を伝える。

504 Gateway Timeout — 上流タイムアウト

上流サーバーが時間内に応答しなかった。重い DB クエリ、外部 API の遅延。Nginx の proxy_read_timeout を確認。

DevLab のステータスコード検索ツール

HTTP ステータスコード検索ツール では、コード番号やキーワード (例: "redirect", "forbidden", "timeout") で即座に検索でき、各コードの意味・原因・対処法を一覧で確認できます。ブラウザ完結で登録不要。

関連ツール: HTTP ヘッダー検証リダイレクトチェーン追跡セキュリティ診断

まとめ

HTTP ステータスコードはサーバーとクライアントの共通言語。特に 301 vs 302 の SEO 影響、400 vs 422 のバリデーション使い分け、500 系のインフラ診断は頻出知識です。困ったらまずステータスコードを確認し、上記の対処法を当てはめてください。

📚 関連記事

PNG vs WebP vs AVIF|画像フォーマットの選び方と変換方法

PNG / JPEG / WebP / AVIF の特徴・用途・ブラウザ対応状況を比較。picture 要素での出し分け、DevLab の画像フォーマット変換ツールの使い方も解説。

2026-04-18

Whois でドメイン情報を調べる方法|有効期限・ネームサーバー・登録者

Whois でわかること (登録者・有効期限・レジストラ・NS)、GDPR によるプライバシー保護の影響、ドメイン管理の実務的な使い方を解説。

2026-04-18

cURL コマンドを JavaScript fetch・Python requests に変換する方法|DevTools 連携

Chrome DevTools の Copy as cURL を fetch / axios / Python requests / PHP cURL / Go net/http に変換する手順を解説。主要 cURL オプション (-X / -H / -d / -F / -u / -b / -L) の変換パターン、認証トークンの扱い、注意点まで。

2026-04-16

Cookie のセキュリティフラグ完全ガイド|Secure / HttpOnly / SameSite / __Host-

Cookie のセキュリティ属性 Secure / HttpOnly / SameSite (Strict/Lax/None) / __Host- __Secure- プレフィックス / 4096 バイト制限を解説。CSRF / XSS / セッションハイジャック対策と、Laravel / Express の実装例。

2026-04-16

JWT のセキュリティベストプラクティス|alg none 攻撃 / 有効期限 / 署名検証

JWT (JSON Web Token) の代表的な脆弱性 6 種類 (alg none 攻撃 / 鍵混同 / 無期限トークン / payload への機密情報 / 失効不可 / 弱いシークレット) と対策。リフレッシュトークンパターン、失効リスト、HttpOnly Cookie 格納まで。

2026-04-16

ExcelでCSVを正しく開く・保存する方法|文字化けしないUTF-8 BOM対応

ExcelでCSVを開くと文字化けする原因と解決策。UTF-8 BOM付きCSVの作り方、Excelインポート手順、PHPとPythonでのBOM付きCSV出力コード例。macOS版Excelの注意点も解説。

2026-04-14