※購入先、ダウンロードへのリンクにはアフィリエイトタグが含まれており、それらの購入や会員の成約、ダウンロードなどからの収益化を行う場合があります。

client errorとは?4xxの原因を最短で切り分ける手順とコード別対策ガイド

監視ダッシュボードやアクセスログで4xxが増えているのを見つけた瞬間、「ユーザーの操作ミスだろう」と片付けたくなる一方で、実はアプリの実装変更、認証設定、WAFやCDNのルール、URL設計の不整合など“こちら側の問題”が潜んでいることも少なくありません。しかも4xxは種類が多く、400・401・403・404・429が混ざると、どこから手を付けるべきか判断が難しくなります。

本記事では、client error(4xx)の基本を押さえつつ、30分で原因に当たりを付ける切り分けフローを軸に、代表コードごとの原因と対策を具体的に整理します。さらにSearch Consoleで見える404・ソフト404の「直す/放置」の判断基準、CloudFrontやIISなど環境別の見方、再発防止の監視設計までまとめました。読み終えたときには、目の前の4xxに対して「何を確認し、どこを直し、どう防ぐか」を迷わず決められるはずです。

※本コンテンツは「記事制作ポリシー」に基づき、正確かつ信頼性の高い情報提供を心がけております。万が一、内容に誤りや誤解を招く表現がございましたら、お手数ですが「お問い合わせ」よりご一報ください。速やかに確認・修正いたします。

client errorの意味と4xxの全体像

4xxが示す範囲と5xxとの違い

client errorはHTTPステータスコードのうち、主に4xxを指します。ざっくり言えば「クライアントのリクエストに問題があり、サーバーがそのまま処理できない」状態です。ただし、ここでいう“クライアント”はブラウザだけではなく、モバイルアプリ、APIクライアント、クローラ、CDNやプロキシ経由のアクセスなど、サーバーに対してリクエストを投げるすべてを含みます。

一方の5xxは「サーバー側がリクエストを処理しようとしたが、内部で失敗した」状態です。データベース障害、アプリ例外、オリジン到達不可、タイムアウト、設定の不整合などが典型です。
現場で重要なのは、4xx=利用者のミス、5xx=サーバーのミスと単純化しないことです。たとえば「403(Forbidden)」は権限不足のように見えますが、実際にはWAFの誤検知や、CDNの国別ブロック設定、アプリ側のアクセス制御の誤りなど“運用・設定”起因で大量発生することが珍しくありません。「404(Not Found)」も、ユーザーの打ち間違いより、内部リンク・サイトマップ・アプリのルーティング・リダイレクトの設計ミスで発生することが多いです。

つまり4xxを見たら、次の問いを立てるのが近道です。

  • どの層(アプリ/Webサーバー/CDN/WAF/認証基盤)が4xxを返しているか

  • 誰が(ユーザー/ボット/社内システム/外部連携)そのリクエストを投げているか

  • 仕様として正しい4xxか、事故としての4xxか

この3点が整理できると、復旧までの距離が一気に縮まります。

代表的な4xx一覧と「まず見るべき観点」

4xxは種類が多いですが、運用でよく見かけるものは限られます。まずは代表的なコードを“原因カテゴリ”で把握すると混乱しません。

  • 400(Bad Request)
    リクエストが不正。必須パラメータ不足、型不一致、JSON不正、URLエンコード不備、サイズ超過など。

  • 401(Unauthorized)
    認証が必要だが認証情報がない、または不正。トークン期限切れ、Authorizationヘッダ欠落、署名不一致など。

  • 403(Forbidden)
    認証はできた/あるいはリクエストは理解できたが、アクセスを許可しない。権限不足、IP制限、WAF、地域制限、ディレクトリ保護など。

  • 404(Not Found)
    リソースが存在しない。URL誤り、リンク切れ、削除済み、ルーティング不備。

  • 410(Gone)
    恒久的に削除した。将来復活しないことを明確に伝えたい場合に使う。

  • 429(Too Many Requests)
    レート制限により拒否。過剰アクセス、ボット、連携の暴走、クライアントのリトライ設計不備など。

ここでの「まず見るべき観点」は、コードの意味そのものよりも診断に必要な情報です。具体的には次の4つを最初に押さえます。

  1. 発生しているURL/エンドポイント(特定の1本か、広範囲か)

  2. 発生している主体(ユーザーのブラウザなのか、アプリなのか、クローラなのか)

  3. 発生頻度とタイミング(急増なのか、一定なのか、リリース直後なのか)

  4. ログに残っている“拒否理由”(アプリが返したのか、WAFなのか、CDNなのか)

この段階で「重要導線で起きている401/403/429は高優先」「ボット由来の404は中〜低優先」など、初動の優先順位も決めやすくなります。


client errorを30分で切り分ける手順

手順1 再現と影響範囲の確定

最短で解決するには、いきなり設定を触らず、まず状況を言語化します。再現できるかどうかは非常に重要です。再現できれば原因が絞れますし、再現できない場合でも「どの条件で発生するか」を推定できます。

確認項目は次の順序がおすすめです。

  1. どのステータスコードが増えているか
    4xxの合計だけを見ると、404のノイズに埋もれて本当に深刻な401/403/429を見落としがちです。まずはコード別に分解します。

  2. 影響範囲(URL・機能・ユーザー層)

    • 特定URLだけ:ルーティング、公開範囲、リダイレクト、パーミッションを疑う

    • 特定機能だけ:API仕様変更、認証・権限、バリデーションを疑う

    • 特定UAだけ:アプリ旧版、クローラ、bot対策、ブラウザ互換を疑う

    • 特定国・IP帯だけ:CDN/WAFの地理制限、IPレピュテーションを疑う

  3. 発生開始時刻と直前イベント
    リリース、WAFルール更新、証明書更新、DNS変更、CDN設定変更、ログイン方式変更など、運用上のイベントと紐づくことが多いです。

  4. ユーザー影響(売上・主要導線・SLO)
    監視上のスパイクでも、ボット由来なら実害は小さい一方、ログインや購入の401/403は即影響します。

再現する際は、同じURLでも「ログイン状態」「Cookie」「Authorization」「User-Agent」「リファラ」「IP(社内/VPN)」で結果が変わることがあるため、条件を揃えて確認します。

手順2 ログで「誰が」「何を」要求したか見る

原因切り分けは、結局ログがものを言います。最低限、次の情報が取れれば診断の精度が上がります。

  • リクエストライン:メソッド、パス、クエリ

  • ステータスコード:4xxの種類

  • リファラ:どこからリンクされたか(内部遷移・外部参照が分かる)

  • User-Agent:ブラウザ/アプリ/クローラ判別

  • 認証情報の有無:Authorization、Cookie、セッションID(値そのものは扱いに注意)

  • クライアント識別:IP、ユーザーID、トークンの種別、X-Forwarded-For 等

  • 処理時間:遅延が絡む場合の手がかり

  • 拒否理由のログ:WAFのルールID、認可失敗の理由、バリデーションエラー内容など

CDNやWAFが挟まる環境では、どこで拒否されたかが最重要です。

  • CDNが返しているのか(エッジでブロック、キャッシュされたエラー応答)

  • オリジンが返しているのか(アプリやWebサーバーの設定)

  • 認証基盤が返しているのか(認証サーバーやIDaaS)

この“責任境界”が曖昧だと、原因箇所の推測がぶれます。ログの突き合わせ(CDNログとオリジンログの同時刻・同一リクエストの照合)を意識してください。

手順3 原因カテゴリに当てはめる

ログから見えてきた現象を、カテゴリに落とすと対処がスムーズです。おすすめの分類は次の5つです。

  1. URL・ルーティング起因
    404/410中心。内部リンクのミス、サイトマップの誤掲載、リダイレクトミス、アプリルーティング不備、削除の影響など。

  2. 認証起因
    401中心。トークン期限切れ、署名不一致、ヘッダ未付与、Cookie属性変更(SameSite等)、認証方式変更など。

  3. 認可(権限)起因
    403中心。ロール設定、ACL、IP制限、WAF誤検知、管理画面保護など。

  4. 入力・仕様不整合起因
    400中心。必須項目、型、フォーマット、サイズ、エンコード、バージョン差異など。

  5. 制限・防御起因
    429や403中心。レート制限、bot対策、国別ブロック、セキュリティ製品の判定など。

ここで大切なのは「同じコードでも原因が違う」ことです。たとえば403は権限不足だけでなく、WAF誤検知や国別制限でも出ます。ログの“拒否理由”が取れない場合は、発生条件(特定IP帯、特定UA、特定パス)から推定します。

手順4 応急対応と恒久対応を分ける

緊急時にありがちな失敗は、応急対応と恒久対応が混ざり、結果として再発することです。まずは「止血」を優先し、その後に原因を潰す流れに分けます。

応急対応の例

  • 404が主要ページで多発:いったんページを復元、または暫定的に正しいページへ301

  • 401/403が主要APIで多発:直近の認証・権限変更をロールバック

  • 429でサービスが実質停止:制限値を一時緩和しつつ、攻撃兆候がないか監視強化

  • WAF誤検知:最小範囲で例外ルールを入れ、影響を観測

恒久対応の例

  • 内部リンク・サイトマップ生成ロジックの修正

  • 認証トークン更新設計、失効と更新の例外処理、クライアント側バックオフの実装

  • 権限・ロール設計の見直し、監査ログ整備

  • レート制限のキー設計(IPのみ→ユーザーIDも併用等)、誤検知時の救済導線

応急対応は「影響を止める」ことが目的なので、将来の拡張性よりも速度を優先してよい場面があります。ただし、応急対応の内容は必ず記録し、恒久対応のタスクに落とし込むのが再発防止の要です。


client errorの代表コード別の原因と対策

400の原因と直し方

400は「リクエストが不正」の総称で、APIやフォーム送信、Webhookなどで頻出します。原因が多岐にわたるため、エラーレスポンスの設計がそのまま運用難易度を左右します。

典型的な原因

  • 必須パラメータ不足(例:idが空、tokenがない)

  • 型不一致(数値が必要なのに文字列、配列が必要なのにオブジェクト)

  • JSON構文不正(カンマ、クォート、エスケープ)

  • 文字コード・エンコーディング不備(URLエンコード漏れ、二重エンコード)

  • サイズ超過(ヘッダやボディが大きすぎる)

  • 仕様変更による旧クライアントの送信形式不一致

対策の進め方

  1. サーバー側ログに“どの検証で落ちたか”を残す
    400が増えたときに最短で原因が分かるのは、「必須項目Xが欠落」「フォーマット不正」「サイズ超過」のような機械可読な理由です。個人情報を出しすぎない範囲で、失敗理由を構造化して残します。

  2. クライアント側のバリデーションと整合させる
    サーバーだけが厳しいと、ユーザー体験は悪化します。可能ならクライアント側でも同じ制約を実装し、送信前に弾きます。

  3. 仕様変更は段階的移行にする
    旧アプリや外部連携が残っていると、突然400が増えます。バージョニング、互換期間、警告ログの期間を設けると安全です。

運用のコツ

  • 400の“総数”だけでなく、原因コード別(missing_field / invalid_format など)で集計できると、対応が早くなります。

401の原因と直し方

401は認証の問題です。ログイン機能やAPI認証(Bearerトークン、署名付きリクエスト、セッションCookieなど)で発生します。

典型的な原因

  • Authorizationヘッダが付与されていない(クライアントの実装バグ、プロキシでヘッダが落ちる)

  • トークン期限切れ(更新処理が走っていない、端末時刻ずれ)

  • 署名不一致(鍵の更新、環境変数の差し替えミス)

  • Cookie属性変更(SameSite/secure/httpOnly)により送られない

  • 認証サーバー側の設定変更(クライアントIDの無効化、リダイレクトURLの不整合)

対策の進め方

  1. 401の発生元を分解する
    どのエンドポイントで401が出ているか。ログイン直後なのか、一定時間後なのか。更新APIだけなのか。これで原因がかなり絞れます。

  2. トークンのライフサイクルを見直す

    • 期限切れ前に更新する

    • 更新失敗時の再認証導線を用意する

    • 連続失敗時は無限リトライしない(サーバー負荷を増やしやすい)

  3. クライアント差分を疑う
    UAやアプリバージョン別に401率を見れば、特定バージョンのバグや互換性問題を発見しやすいです。

ユーザー体験の注意点

  • 401を返す場合、可能であれば「再ログインが必要」「トークン更新が必要」など、次の行動が分かる情報を返すと問い合わせが減ります(返しすぎはセキュリティ上注意)。

403の原因と直し方

403は「許可されていない」状態です。認証は通っていても、権限がない、あるいはセキュリティ機構が拒否しているケースがあります。

典型的な原因

  • ロール・権限設定のミス(管理者だけアクセス可能なAPIに一般ユーザーがアクセス)

  • 公開範囲の設定(社内IPのみ許可、特定パスのBasic認証)

  • WAF/bot対策による遮断(特定パターンのクエリ、特定UA、攻撃判定)

  • 国別・地域別ブロック(CDNやWAFで設定)

  • ファイル/ディレクトリのアクセス制御(Webサーバー設定)

対策の進め方

  1. どの層が403を返しているかを確定する
    アプリログに到達していないならWAF/CDN側が疑わしいです。到達しているならアプリの認可ロジックや設定を見ます。

  2. 直近の変更履歴を洗う
    WAFルール更新、権限テーブル変更、管理画面の保護設定など、変更が原因になりやすいです。

  3. 誤検知の切り分けをする
    特定国、特定UA、特定パスに偏るなら誤検知の可能性があります。ルールIDや該当条件をログに残せると修正が速いです。

  4. 例外は最小範囲で適用する
    403の例外ルールは広げすぎるとリスクが上がります。まずは影響範囲を限定し、ログで監視しながら調整します。

404と410の使い分け

404は「存在しない」、410は「恒久的に削除した」です。SEOや運用を考えると、どちらが正しいかは“意図”で決めるのが基本です。

404が向くケース

  • 単に存在しない(誤URL、打ち間違い、古いリンク)

  • 将来復活の可能性がある(期間限定ページ等)

  • 削除したが、状況により復活もあり得る

410が向くケース

  • 完全廃止し、今後復活しない

  • 検索エンジンにも「戻らない」ことを明確に伝えたい

  • 大量の廃止URLを整理したい(移行時など)

代替ページがある場合

  • 近い代替があるなら301リダイレクトが選択肢です。ただし、何でもかんでもトップページに飛ばすのはユーザー体験を損ね、検索エンジン評価上も望ましくないことがあります。できるだけ意味的に近いページへ誘導します。

注意:200でエラーページを返さない

  • 404相当なのに200を返すと、後述のソフト404扱いになりやすく、インデックスの品質を下げる要因になります。

429の原因と直し方

429はレート制限です。正当な防御として機能している場合もありますが、設定が厳しすぎると正規ユーザーの利用を妨げます。

典型的な原因

  • 同一IPから短時間に大量アクセス(企業ネットワーク、モバイルキャリアNATなどで“同一IPに見える”)

  • クライアントの無限リトライ(失敗時に即時再送を繰り返す)

  • 外部連携の暴走(Webhookの再送、バッチの同時実行)

  • bot/スクレイピング(特定パスへの集中アクセス)

  • 制限キー設計の不備(IPだけで判定してしまい、正規ユーザーも巻き込む)

対策の進め方

  1. 発生元を特定する(IP/UA/ユーザーID)
    正規ユーザーか、攻撃か、連携かを見極めます。

  2. 制限のキーと閾値を再設計する
    IPだけでは巻き込みが起きやすいので、ユーザーIDやAPIキー単位、トークン単位を併用するなど工夫します。

  3. クライアント側でバックオフを実装する
    429を受けたら待ち時間を伸ばし、同時リクエスト数も抑える。これだけでサーバー負荷と429率が大幅に改善することがあります。

  4. 例外と監視をセットで運用する
    特定連携は上限を緩める、ただし異常増加は検知する、というバランスが必要です。


Search Consoleで見るclient errorの判断基準

404は直すべき場合と放置でよい場合

Search Consoleで「404(ページが見つかりません)」が出ると焦りがちですが、404自体は“存在しないなら存在しないと返している”だけで、必ずしも悪ではありません。重要なのは意図したURLなのに404になっていないかです。

直すべきかの判断は、次の2軸で考えると迷いません。

  • あなたが“そのURLを存在させたい”のか

  • Googleに“そのURLを存在すると伝えてしまっている”のか(例:サイトマップ、内部リンク)

直すべき代表例

  • サイトマップに載せているURLが404
    → サイトマップ生成ロジックが誤っているか、公開・非公開の切替で不整合がある可能性が高いです。

  • 内部リンクやナビゲーションから404に行けてしまう
    → ユーザー体験として明確な損失なので優先度は高めです。

  • 重要ページ(購入、ログイン、問い合わせ)で404
    → 直ちに復旧と原因究明が必要です。

放置でよい(または優先度が下がる)代表例

  • ボットが無関係なURLにアクセスしているだけ
    → 404を正しく返しつつ、必要に応じてWAFやレート制限で負荷を下げます。

  • 削除済みで代替もないURL
    → 404(または410)を返し続けること自体は自然です。

ここでのポイントは、Search Consoleのレポートは“サイト改善のヒント”であって、すべてをゼロにすることが目的ではない、という点です。内部品質(サイトマップや内部リンク)に関わる404を優先し、外部要因やノイズは落ち着いて扱うのが現実的です。

ソフト404が起きる理由と直し方

ソフト404は、ステータスコードとしては200(成功)などを返しているのに、ページの中身が「存在しない」「エラー表示」「極端に薄い」と判断され、Search Consoleで“404相当”として扱われる状態です。

よくある原因

  • 存在しないページでも共通テンプレで200を返している
    (例:「お探しのページは見つかりません」と表示しているのに200)

  • 検索結果ゼロのページや、内容がほぼないページを量産している

  • パラメータで無限にURLが増え、薄いページが大量にできている

  • 認証が必要なのに、200でログイン画面を返してしまう(本来は401/403が適切な場合がある)

直し方の基本

  1. 存在しないなら、404または410を正しく返す
    表示内容とステータスコードを一致させます。

  2. 代替導線を用意する
    404ページ自体は問題ありませんが、ユーザーが次に進めるように「検索ボックス」「カテゴリ一覧」「人気ページ」などを用意すると離脱を減らせます。

  3. 薄いページを作らない設計にする
    検索条件ページやタグページの生成ルールを見直し、index/noindexや正規化も含めて整理します(サイト全体の設計論点)。

ソフト404は“コードの修正”だけでなく、“コンテンツ設計”の見直しが必要になることもあります。まずは「本当に存在しないのか」「存在するが薄いのか」を分けて考えると、打ち手が見えます。

サイトマップ送信URLの「間違い」を潰す

Search Consoleでの4xx問題を最速で減らすなら、サイトマップと内部リンクに集中するのが効率的です。ここが正しければ、検索エンジンに対して「存在するURL」を正しく伝えられている状態になります。

チェックポイントは次のとおりです。

  • URL正規化の統一
    末尾スラッシュ有無、http/https、www有無、大文字小文字、URLエンコードの一貫性。

  • 公開制御との整合
    会員限定・非公開ページがサイトマップに混ざっていないか。公開切替の際にサイトマップ更新が追随しているか。

  • リダイレクトチェーンの排除
    サイトマップには最終到達URLを掲載し、301→302→404のような事故を避けます。

  • 更新のタイミング
    大規模リニューアル時は、旧URLをサイトマップに残さない、更新漏れを監視する、といった運用が重要です。

サイトマップが正しくても、内部リンクが古いままだとユーザー体験が崩れます。サイトマップと内部リンクの両方を“同じ正規URL”に揃えるのが理想です。


CDN・サーバー別に見るclient error

CloudFrontで4xx/5xxが出るときの見方

CDN配下では、4xxがどこで発生しているかが見えづらくなります。そこで意識したいのが「エッジで返したのか、オリジンが返したのか」です。CloudFrontのような構成では、オリジンが返したステータスがそのままビューアへ返るケースが多く、原因がアプリやオリジン設定にあることも少なくありません。

確認の基本手順

  1. 同一リクエストをエッジログとオリジンログで突合する
    同時刻、同一パス、同一クエリ、同一UA、同一IP(X-Forwarded-For含む)を照合し、どこで拒否されたかを確定します。

  2. キャッシュが絡むか確認する
    一時的な設定ミスで返した403や404が、一定時間キャッシュされて“直したのに治らない”ように見えることがあります。キャッシュポリシーやエラーキャッシュの扱いを把握すると、復旧判断が早くなります。

  3. WAFやセキュリティ設定の影響を疑う
    特定パスだけ403、特定国だけ403、特定UAだけ403など、偏りがある場合はWAF/制御ルールが疑わしいです。

よくある落とし穴

  • オリジンのルーティングが変わったのに、CDN側の設定やビヘイビアが追随していない

  • 認証が必要なパスをキャッシュしてしまい、想定外の401/403が増える

  • リダイレクトや正規化が二重化し、意図せず404が増える

CDNは便利ですが、原因箇所が増える分、ログの突合と責任境界の整理が重要になります。

IISで4xxが出るときの基本切り分け

IIS環境では、認証・アクセス制御・URL Rewrite・ディレクトリ権限などの設定が4xxに直結しやすいです。特に403はIIS設定やWindowsの権限設定が絡むことがあります。

切り分けの基本

  1. 発生するパスと条件を確定
    特定ディレクトリだけなら、Web.configやIISの機能単位設定が疑わしいです。

  2. 認証設定の確認
    Windows認証、匿名認証、Basic認証などの変更で401/403が出やすくなります。

  3. アクセス権限の確認
    アプリプールの実行ユーザーが対象ファイル/ディレクトリにアクセスできないと、403や関連エラーが出ることがあります。

  4. Rewriteやリダイレクトの影響確認
    ルールの順序や条件が変わると、意図しないURLに誘導され404が出ることがあります。

IISでは「いつから起きたか」と「どの設定が変わったか」が重要な手がかりになるため、変更履歴とセットで追うと原因に到達しやすいです。


再発防止チェックリストと監視の設計

リンク・ルーティング・リダイレクトの点検

404を減らす最も確実な方法は、ユーザーが踏む導線(内部リンク)と検索エンジンに伝える導線(サイトマップ)を整えることです。以下のチェックリストを定期点検に組み込みます。

  • 内部リンクに404がない(主要導線は自動テストやクローリングで確認)

  • 末尾スラッシュ、www有無、http/httpsなどURL正規化が統一されている

  • リダイレクトは最短(チェーンになっていない)

  • 代替がない削除URLは404/410を返し、200で誤魔化していない

  • サイトマップは存在するURLのみを載せ、更新が公開状態に追随している

  • パラメータ付きURLの取り扱いが整理され、無限生成を防いでいる

特に大規模改修やCMS移行では、旧URLがどこかに残りやすいので、内部リンクの自動検査(定期クローラ、E2Eテスト)を用意しておくと効果的です。

認証・権限・レート制限の運用ルール

401/403/429は、セキュリティとユーザー体験のバランスが難しい領域です。運用ルールが曖昧だと、どこかのタイミングで一気にスパイクします。

  • トークンの期限、更新、失効、再認証の動線が明確

  • 401増加は「ログイン不全の兆候」として監視される

  • 403増加は「権限設定/WAF誤検知の兆候」として監視される

  • レート制限はキー設計(IPのみ/ユーザーID併用)と閾値が文書化されている

  • 429時のクライアント動作(バックオフ、同時実行制御)が統一されている

  • セキュリティ例外は最小範囲で、期限と監視がセットになっている

“強くしすぎてユーザーが使えない”状態と、“緩くしすぎて攻撃に弱い”状態の中間を保つには、監視と継続的な調整が必要です。

監視指標とアラートの最小セット

4xx監視は、総数だけだとノイズが多く、重要な異常を見落とします。最小セットとして次の構成にすると、運用負荷と検知精度のバランスが取りやすいです。

  1. コード別の4xx率(特に401/403/429)
    404はノイズになりやすい一方、401/403/429はユーザー影響が直結しやすいので、別扱いで監視します。

  2. 重要エンドポイント別の4xx
    ログイン、購入、決済、会員登録、主要APIなどは個別に監視します。

  3. 発生主体の偏り監視
    UA、IP帯、国別の偏りを見れば、bot増加やWAF誤検知、特定アプリ版の不具合に早く気づけます。

  4. リリースイベントとの紐づけ
    デプロイ直後の4xx変動を追えるようにし、「いつから」「何が変わった」をすぐ言える状態にします。

最後に、監視は“検知して終わり”ではありません。アラートが鳴ったら、この記事で紹介した切り分け手順(再現→ログ→分類→対応)に沿って動けるよう、当番手順やRunbookに落としておくと、復旧速度が安定します。