406エラー 【HTTP 406 Not Acceptable】

概要

406エラー(HTTP 406 Not Acceptable)とは、Webサーバで起きるエラーの種類の一つで、クライアントが提示した受け入れ可能なデータ形式などのリストにサーバが対応可能なものが含まれていないことを通知するもの。

WebサーバとWebブラウザなどのクライアントの間ではHTTPHypertext Transfer Protocol)という通信規約(プロトコル)でデータ伝送を行っている。クライアントからの要求(リクエスト)に対してサーバは応答(レスポンス)を返すが、その際に現在の状態を示すHTTPステータスコードを通知する。

ステータスコードの400番台はクライアントに起因するエラーを表しており、406番のエラーメッセージは “Not Acceptable” (受け入れ不可能)である。クライアントがリクエスト中で提示した受け入れ可能なデータ形式などの中に、サーバが生成できそうなものが含まれていないことを通知する。

クライアントはリクエスト時にAcceptヘッダなどで受け入れ可能な言語(Accept-Language)、文字コード(Accept-Charset)、コンテンツ圧縮形式(Accept-Encoding)などを指定することができる。通常、クライアント側で処理可能な形式を複数列挙してサーバに通知するが、この中にサーバ側が対応可能なものが一つもない場合に406エラーを返す。

サーバは406エラーを返す場合には送信可能な形式の選択肢を送り、クライアントがその中から一つを選んで改めてリクエストするという手順が標準とされる。しかし、実際には406エラーが送信されることは稀で、サーバは自らが送信可能な形式から一つを選んで「200 OK」応答で送ってしまうことが多いようである。

(2024.8.23更新)

HTTPステータスコード一覧

*1 302はHTTP/1.0では「Moved Temporarily」だった。
*2 413はHTTP/1.1では「Request Entity Too Long」、RFC 7231では「Payload Too Long」だった。
*3 414はHTTP/1.1では「Request-URI Too Long」だった。
*4 416はHTTP/1.1では「Requested Range Not Satisfiable」だった。
*5 418は1998年エイプリルフールのジョークRFC 2324で「I'm a teapot」として定義されていた。