406エラー(Not Acceptable)とは?意味をわかりやすく簡単に解説
公開:
406エラー(Not Acceptable)とは
406エラーはクライアントが要求したコンテンツの形式を、サーバーが提供できない場合に返されるHTTPステータスコードです。具体的には、リクエストヘッダーに含まれる「Acceptフィールドで指定された形式に合致するレスポンスを生成できないとき」に発生します。
このエラーはコンテンツネゴシエーションの失敗を示しており、クライアントとサーバー間で受け入れ可能な表現形式の合意が得られなかったことを意味します。英名では「Not Acceptable」と呼ばれ、RFC 7231で定義されている標準的なHTTPレスポンスステータスの一つとして位置づけられています。
Acceptヘッダーとコンテンツネゴシエーションの仕組み
Acceptヘッダーはクライアントが受け入れ可能なMIMEタイプを、サーバーに伝えるために使用されるHTTPリクエストヘッダーです。例えば、Accept: application/jsonと指定した場合、クライアントはJSON形式のレスポンスを期待していることになります。
| Acceptヘッダーの例 | 意味 |
|---|---|
| application/json | JSON形式を要求 |
| text/html | HTML形式を要求 |
| application/xml | XML形式を要求 |
| image/webp | WebP画像形式を要求 |
サーバーは受信したAcceptヘッダーを解析し、提供可能な形式の中から最適なものを選択してレスポンスを返します。しかし、クライアントが要求した全ての形式をサーバーが提供できない場合、406エラーが返される仕組みとなっています。
406エラーが発生する具体的な状況と対処方法
典型的な発生ケースとして、APIエンドポイントがXML形式のみをサポートしているのに対し、クライアントがAccept: application/jsonのみを指定している場合が挙げられます。この場合、サーバーは要求された形式でレスポンスを生成できないため、406ステータスコードを返すことになります。
| 対処方法 | 実装内容 |
|---|---|
| クライアント側 | Acceptヘッダーに複数形式を指定 |
| サーバー側 | 複数のコンテンツ形式に対応 |
| デフォルト形式 | 汎用的な形式を用意 |
| エラーレスポンス | 利用可能な形式を明示 |
解決策としては、クライアント側でAcceptヘッダーにAccept: application/json, application/xml, */*のように複数の形式を指定する方法があります。サーバー側では、より多くのコンテンツ形式に対応するか、406エラーのレスポンスボディに利用可能な形式のリストを含めることで、クライアントが適切な再リクエストを行えるように配慮できます。
※上記コンテンツの内容やソースコードはAIで確認・デバッグしておりますが、間違いやエラー、脆弱性などがある場合は、コメントよりご報告いただけますと幸いです。
左へフリックで次のページ、右へフリックで前のページに戻れます左右の矢印ボタン、左右のスワイプで移動できます





