HTTPステータスコード & レスポンスヘッダー:完全リファレンス
HTTPステータスコードとヘッダーを理解することは、Web開発者、SEOスペシャリスト、システム管理者にとって不可欠です。このガイドでは、現代のWeb通信で使用される主要なステータスコードとヘッダーを網羅しています。
1. HTTPステータスコード・クイックリファレンス
ステータスコードは、最初の数字に基づいて5つのクラスに分類されます。
1xx: 情報
- 101 Switching Protocols: サーバがプロトコルの切り替えに同意(例:WebSocketへのアップグレード)。
2xx: 成功
- 200 OK: リクエストが成功した。
- 201 Created: リクエストが成功し、新しいリソースが作成された。
- 204 No Content: リクエストは成功したが、返すべきコンテンツがない。
3xx: リダイレクト
- 301 Moved Permanently: リソースが恒久的に新しいURLに移動した。
- 302 Found: リソースが一時的に異なるURLにある。
- 304 Not Modified: キャッシュ用。リソースが変更されていないことを示す。
4xx: クライアントエラー
- 400 Bad Request: リクエストの構文が誤っているなど、サーバがリクエストを処理できない。
- 401 Unauthorized: 認証が必要。
- 403 Forbidden: サーバはリクエストを理解しているが、アクセスを拒否している。
- 404 Not Found: リクエストされたリソースが見つからない。
- 429 Too Many Requests: 短時間にリクエストを送りすぎている(レート制限)。
5xx: サーバエラー
- 500 Internal Server Error: サーバ内部で予期しないエラーが発生した。
- 502 Bad Gateway: ゲートウェイまたはプロキシとして動作しているサーバが、上位サーバから無効なレスポンスを受け取った。
- 503 Service Unavailable: サーバが現在リクエストを処理できない(メンテナンスや過負荷)。
- 504 Gateway Timeout: 上位サーバからのレスポンスがタイムアウトした。
2. 主要なHTTPレスポンスヘッダー
ヘッダーは、レスポンスやサーバに関するメタデータを提供します。
キャッシュ制御: Cache-Control
ブラウザや中間キャッシュ(CDNなど)がリソースをどのように保存するかを制御します。
public, max-age=31536000, immutable: バージョン管理された静的アセット(JS, CSS)に最適。no-store: 何もキャッシュしない(機密データ用)。no-cache: キャッシュを使用する前にサーバで再検証が必要。
セキュリティ: Strict-Transport-Security (HSTS)
ブラウザに対し、HTTPS経由でのみサイトにアクセスするように指示します。
- 例:
max-age=63072000; includeSubDomains; preload
セッション管理: Set-Cookie
サーバからユーザエージェントにクッキーを送信します。
- 例:
id=abc; Max-Age=3600; Secure; HttpOnly; SameSite=Lax- HttpOnly: JavaScriptからのクッキーアクセスを防止(XSS対策)。
- Secure: HTTPS経由でのみクッキーを送信。
- SameSite: クロスサイトクッキーの動作を制御。
コンテントネゴシエーション: Content-Type & Accept-Encoding
- Content-Type: リソースのメディアタイプを示す(例:
text/html,application/json)。 - Accept-Encoding: クライアントがサポートする圧縮形式をサーバに伝える(例:
gzip,br)。
3. 比較表: 301 vs. 302 リダイレクト
| 特徴 | 301 恒久的な移動 | 302 一時的な移動 |
|---|---|---|
| SEOへの影響 | リンクジュース(PageRank)を継承 | 継承しない |
| ブラウザキャッシュ | デフォルトでキャッシュされる | デフォルトでキャッシュされない |
| 主なユースケース | サイト移転、URL変更 | メンテナンス、期間限定キャンペーン |
FAQ: 一般的なHTTPの問題
Q: ログインしているのに 403 Forbidden エラーが出るのはなぜ?
A: ユーザにそのリソースに対する特定の権限がないか、CSRFトークンの不一致が原因であることが多いです。
Q: 401 と 403 の違いは何?
A: 401 Unauthorized は「あなたが誰かわからない(ログインしてください)」という意味です。403 Forbidden は「あなたが誰かはわかっているが、許可されていない」という意味です。
Q: 502 Bad Gateway を直すには?
A: 通常はサーバ側の問題です。バックエンドアプリ(Node.js, Pythonなど)が起動しているか、リバースプロキシ(Nginx/Apache)の設定が正しいか確認してください。
関連ツール
- HTTPヘッダー解析: 任意のURLのヘッダーを検査・分析します。
- Cache-Controlビルダ: 最適なキャッシュポリシーを生成します。
- ステータスコードチェッカ: APIやWebサイトのレスポンスコードを検証します。