[517] [DFN[[CODE(HTTP)[[[415]]]]]] ([DFN[[[Unsupported Media Type]]]])
は、[[要求メッセージ]]の [[payload]] の [[MIME型]]や[[内容符号化]]を[[鯖]]が処理できないことを示す[[状態符号]]です。

* 仕様書

[REFS[
- [514] '''[CITE@en[RFC 7231 - Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content]] ([TIME[2014-08-07 05:54:02 +09:00]] 版) <https://tools.ietf.org/html/rfc7231#section-6.5.13>'''
- [425] [CITE@en[RFC 7231 - Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content]] ([TIME[2014-06-07 01:55:45 +09:00]] 版) <https://tools.ietf.org/html/rfc7231#section-3.1.2.2>
- [507] [CITE@en[RFC 7231 - Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content]] ([TIME[2014-06-07 01:55:45 +09:00]] 版) <https://tools.ietf.org/html/rfc7231#section-4.3.4>
- [5] [CITE@en[RFC 4918 - HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)]] ([TIME[2014-09-21 17:04:59 +09:00]] 版) <http://tools.ietf.org/html/rfc4918#section-8.4>
- [8] [CITE@en[RFC 4918 - HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)]] ([TIME[2014-09-21 17:04:59 +09:00]] 版) <http://tools.ietf.org/html/rfc4918#section-9.3>
- [10] [CITE@en[RFC 5789 - PATCH Method for HTTP]] ([TIME[2014-09-22 15:11:26 +09:00]] 版) <http://tools.ietf.org/html/rfc5789#section-2.2>
- [12] [CITE@en[RFC 7694 - Hypertext Transfer Protocol (HTTP) Client-Initiated Content-Encoding]] ([TIME[2015-11-04 14:05:14 +09:00]] 版) <https://tools.ietf.org/html/rfc7694#section-3>
]REFS]

* 意味

[515] [CODE(HTTP)[[[415]]]] は、[[要求]]の [[payload]]
が[[対象資源]]が[[要求メソッド]]について対応していない形式であるために[[起源鯖]]が[[要求]]の処理を拒否したことを示します
[SRC[>>514]]。

[516] ここでいう形式の問題は[[要求]]の [CODE(HTTP)@en[[[Content-Type:]]]] や
[CODE(HTTP)@en[[[Content-Encoding:]]]] で示されたによる問題かもしれませんし、
データを直接検査した結果の問題かもしれません [SRC[>>514]]。

* 構文

[4] [CODE(HTTP)@en[[[PATCH]]]] [[要求]]に対する[[応答]]には、
[CODE(HTTP)@en[[[Accept-Patch:]]]] [[ヘッダー]]を含める[['''べき''']]です [SRC[>>10]]。

[57] [[サーバー]]は、[[要求]]の[[内容符号化]]が原因で [CODE(HTTP)@[[[415]]]] [[応答]]を返す場合、
[[応答]]に [CODE(HTTP)@en[[[Accept-Encoding:]]]] [[ヘッダー]]を含める[RUBYB[べき]@en[ought to]]です
[SRC[>>12]]。

[58] [[サーバー]]は、その他の原因で [CODE(HTTP)[[[415]]]] [[応答]]を返す場合、
[[応答]]に [CODE(HTTP)@en[[[Accept-Encoding:]]]] [[ヘッダー]]を含めては[['''なりません''']]
[SRC[>>12]]。

* 文脈

[424] [[起源鯖]]は、[[要求]]が受け付けられない[[内容符号化]]による[[表現]]を含んでいる場合に、
[CODE(HTTP)[[[415]]]] で[[応答]]して構いません [SRC[>>425]]。

[513] [[起源鯖]]は、 [CODE(HTTP)@en[[[PUT]]]] の[[表現]]が当該[[対象資源]]に関する変更できない[[鯖]]の制約を
(あれば) 満たしているか検証する[['''べきです''']]。満たしていない時には、
満たすように変形を加えるか、適切な説明とともにエラーを返す[['''べきです''']]。
[CODE(HTTP)@en[[[Content-Type:]]]] に関する制約の時は、
[CODE(HTTP)[[[415]]]] を使うことができます。 [SRC[>>507]]

[6] [[WebDAV]] の[[鯖]]は、[[要求]]の [[payload body]] を期待していないところで指定された場合、
[CODE(HTTP)[[[415]]]] [[応答]]を返さなければ[['''なりません''']] [SRC[>>5]]。

[9] [CODE(HTTP)@en[[[MKCOL]]]] [[要求]]の [[payload body]] の [[MIME型]]に対応していない時は、
[CODE(HTTP)[[[415]]]] [[応答]]を返さなければ[['''なりません''']] [SRC[>>8]]。

[11] [CODE(HTTP)@en[[[PATCH]]]] [[要求]]の [[MIME型]]に対応していない時は、
[CODE(HTTP)[[[415]]]] [[応答]]を返す[['''べきです''']] [SRC[>>10]]。

* 歴史

[FIG(quote)[
[FIGCAPTION[
[1] RFC 2068 & 2616 (HTTP/1.1) 10.4.16 415 Unsupported Media Type
]FIGCAPTION]

> The server is refusing to service the request because the entity of
the request is in a format not supported by the requested resource
for the requested method.

要求の実体は要求した method の要求した資源が対応している書式ではないために、
サーバーは要求をサービスするのを拒否しています。
]FIG]

[423] [CITE@en-us[Metadata API for Media Resources 1.0]]
( ([TIME[2014-03-12 15:50:19 +09:00]] 版))
<http://www.w3.org/TR/mediaont-api-1.0/#api-status-codes>

[426] [CITE@en[RFC 7252 - The Constrained Application Protocol (CoAP)]]
( ([TIME[2014-06-27 00:59:37 +09:00]] 版))
<http://tools.ietf.org/html/rfc7252#section-5.9.2.10>

* 関連

[7] [[MIME型]]は理解できるものの内容的に間違っている時は、 [CODE(HTTP)[[[400]]]]
や [CODE(HTTP)[[[422]]]] がより適切です。

* メモ

- [1] 例えば、 [CODE(MIME)[[[multipart/form-data]]]] に対応していない [[CGIスクリプト]]にそれが送られてきたときはこの応答を使えば良さそうですね。
- [2] その[[媒体型]]にはちゃんと対応しているのだけど、その媒体型内で対応している書式じゃないものが使われている場合 (例えば、 [CODE(MIME)[[[application/xml]]]] で [[XML型録]]を期待しているのに、なぜか [[XSLTスタイルシート]]が送られてきたような場合) には、 [CODE(HTTP)[[[422]]]] (処理不能実体) という応答符号が使えます。
- [3] [CODE(HTTP)[[[Accept]]]] などの欄の条件に合致するものがなかった場合には、  [CODE(HTTP)[[[406]]]] (受入れ可能ではない) を使います。 (一見似た意味に思えるので注意。媒体型に「未対応」である主体が違ってます。)