入力パラメータのエンコーディングが不正な場合のHTTPのステータスコード

素朴な疑問。

mb_check_encoding関数で入力パラメータのエンコーディングをチェックしてエラーだった場合、webアプリはHTTPのステータスコードとして何を返せばよいのだろう。

  • 200: エラーメッセージ表示
  • 403: アクセス禁止
  • 406: 受け付けられない
    • 追記: これはメディアタイプ関連のステータスなのでこの場合には適しませんね…
  • 500: エラー扱いにする

どれがいいかしら。

追記:

500だと「内部エラー」という情報を相手に与えてしまうことになるので、クライアント側のエラーということで40xを返すのがよさそう。403を返すか、思い切って404を返してしまう方向でよさげ。