REST 4xx/5xxの見分け方

AppCotton は、ライセンス検証・購入処理・ドメインアクティベーションなど、多くの場面で REST API を使用します。
このとき、クライアント側(WordPress / プラグイン / Web UI / CLI)が受け取るレスポンスが 4xx か 5xx か によって、
原因が「ユーザー操作」なのか「サーバ内部」なのか を即座に切り分けることができます。


1. HTTPステータスの基本的な意味

ステータス範囲意味原因 / 責任
200台正常動作成功 / 認証OK / 発行完了正常
400台(4xx)クライアント側の問題不正な入力 / 認証失敗 / 上限超過ユーザー・リクエストの問題
500台(5xx)サーバ内部エラーDB障害 / 設定ミス / 不具合サーバ・アプリ側の問題
4xx → 修正すべきは「送った値」
5xx → 修正すべきは「サーバ設定・コード」

2. AppCotton REST API の代表的な 4xx

401 Unauthorized

理由:ライセンスキーが無効 / 存在しない

対処:

  • キーを再確認(空白除去)
  • プラグイン側の product_slug が一致しているか確認

403 Forbidden

理由:ドメイン上限に達している / その操作の権限がない

対処:

  • マイページで不要なドメインを解除
  • 権限が必要な API をログアウト状態で叩いていないか確認

404 Not Found

理由:存在しないエンドポイント / product_id / plan_id

対処:

  • AppCotton のプラグインを最新化
  • product_slug → plan_id の紐付け確認

409 Conflict

理由:アクティベーションが既に同一環境で登録済み

対処:

  • domain / instance_id を再確認
  • 一度「解除」→ 再認証を行う

429 Too Many Requests

理由:短時間で大量の認証を試行した

対処:

  • 数分待ってから再試行
  • ボット誤動作がないか確認

3. AppCotton REST API の代表的な 5xx

500 Internal Server Error

理由:PHPエラー / 関数未定義 / null参照

対処:

  • error_log を確認
  • PHPバージョン差異を確認
  • プラグイン無効 → 再有効化(dbDelta再実行)

502 / 503 / 504(サーバ/ネットワーク系)

コード原因
502Bad GatewayReverse Proxy / WAF が遮断
503Service Unavailableサーバ過負荷
504Gateway TimeoutAPI が応答しない

対処:

  • WAF / ModSecurity / Cloudflare を確認
  • APIホストのIPを Allowlist に追加
  • 低スペックサーバで cron や他プラグインの重実行と衝突していないか確認

4. ログで特定する手順

WordPress 側(クライアント側)

wp_remote_post($url) の戻り値 → wp_remote_retrieve_response_code() を確認

サーバ側(AppCotton側)

error_log
Stripe Webhook Log
appcotton_orders / license_activations の更新状況

典型的な切り分け例

状況原因対処
フロントはエラーだが Webhook は正常プラグイン側の product_slug ミスマッチslug 修正
Webhookが 400Signing Secret が不一致AppCotton設定で再設定
500が継続発生DBカラム不整合 / マイグレーション失敗設定 → DB修復

5. 迷ったときの判定フロー

1. ステータスコードが 4xx か 5xx か確認
↓
2. 4xx → 入力・設定・上限・slug を確認
   5xx → サーバ / DB / Webhook / PHPログを確認
↓
3. 4xx にも関わらず改善しない → 実際には product 間違いのケースが多い
4. 5xx で error_log に痕跡が無い → WAF / Proxy でブロックされている

まとめ

区分意味優先チェック対処
4xxユーザー操作や入力の問題product_slug / plan_id / activation_limitUI / 設定で解決
5xxサーバ内部の問題error_log / DB構造 / Stripe Webhookサーバ・アプリ修正が必要
4xx = “送り方を直す”
5xx = “受け側を直す”