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で確認・デバッグしておりますが、間違いやエラー、脆弱性などがある場合は、コメントよりご報告いただけますと幸いです。
ITやプログラミングに関するコラム
PythonをWebで実行する方法
共通テスト「情報Ⅰ」2年目で変わる、日本の教育と学び方
gitでブランチ(branch)を切り替える方法
git cloneでブランチを指定する方法
64GBのメモリが必要な人・不要な人の特徴
PCを再起動するコマンド一覧
CapsLock以外で大文字になる原因【Windows編】
パソコンで大文字になるのを解除する方法
面白いAIの活用事例を業界別に紹介
Gitでcommit(コミット)を取り消す方法
ITやプログラミングに関するニュース
サイボウズがkintone AIを正式提供、β版から約1年を経てクレジット制を導入
ロゼッタのラクヤクAIがCSRドラフト作成期間を90%以上短縮、従来4週間を約2日に
AI CROSSが不動産業界向け生成AI伴走支援を開始、アスコットの業務AI実装を実践サポート
日本情報クリエイトが「オーナー提案AIロボⅡ」売買査定を刷新、月1万円からW査定が回数無制限に
Wur株式会社がAI新規事業診断サービス「MVP事業診断レポート」をリリース、12の質問で事業構想を約10分で分析
バトンズがM&A専門家向け「AI概要書」β版を提供開始、企業概要書のドラフトを最速3分で自動生成
SCSKが観光DXサービス「Connexia」を開発、首里城公園でNFT活用の周遊促進が始動
Verdent AI発表、エンジニア不要でソフトウェアを構築する「AIエンジニアリングチーム」が登場
ゼネラルBREXAテクノロジーが外食・小売向けAIサービス「aimana」を開発、店長の意思決定をデータで支援
田中組がKencopa工程AIエージェント製品版を先行利用開始、建設現場の工程管理属人化を解消へ
