[3] [DFN[[CODE(HTTP)@en[[[Accept-Additions:]]]]]] [[ヘッダー]]は、
[[珈琲ポット]]に対して[[添加物]]を指示するものです。

* 仕様書

[REFS[
- [2] '''[CITE@en[RFC 2324 - Hyper Text Coffee Pot Control Protocol (HTCPCP/1.0)]] ([TIME[2014-10-06 15:21:16 +09:00]] 版) <http://tools.ietf.org/html/rfc2324#section-2.2.2.1>'''
- [11] [CITE@en[RFC 2324 - Hyper Text Coffee Pot Control Protocol (HTCPCP/1.0)]] ([TIME[2014-10-06 15:21:16 +09:00]] 版) <http://tools.ietf.org/html/rfc2324#section-2.3.1>
- [1] [CITE@en[RFC 7168 - The Hyper Text Coffee Pot Control Protocol for Tea Efflux Appliances (HTCPCP-TEA)]]
( ([TIME[2014-04-02 07:55:01 +09:00]] 版))
<http://tools.ietf.org/html/rfc7168#section-2.2.1>
- [19] [CITE@en[RFC 7168 - The Hyper Text Coffee Pot Control Protocol for Tea Efflux Appliances (HTCPCP-TEA)]] ([TIME[2014-10-12 17:41:43 +09:00]] 版) <http://tools.ietf.org/html/rfc7168#section-2.3.2>
]REFS]

* 構文

[4] [CODE(HTTP)@en[[[Accept-Additions:]]]] [[ヘッダー]]の値は0個以上の指定の[[リスト]]
([CODE(HTTP)[#]]) です [SRC[>>2]]。

[FIG(railroad)[
= ?
== 値
== *
=== [[OWS]]
=== [CODE(HTTP)[[[,]]]]
=== [[OWS]]
=== 値
]FIG]

[5] それぞれの値は、種別を表す値に、零個以上の[[引数]]と零個以上の [CODE(HTTP)@en[[[Accept:]]]]
[[引数]]で使われる[[引数]]を続けたものです [SRC[>>2]]。

;; [8] 時代的に [[RFC 2324]] では明記されていませんが、 [CODE(HTTP)[[[;]]]]
の前後に [[OWS]] が認められていると推測されます。

[FIG(railroad)[
= 種別
= *
== [[OWS]]
== [CODE(HTTP)[[[;]]]]
== [[OWS]]
== [[引数]]
= ?
== [CODE(ABNF)@en[[[accept-params]]]]
]FIG]

[9] [CODE(HTTP)@en[[[Accept:]]]] [[ヘッダー]]と同じく、種別に属する[[引数]]と[[ヘッダー]]に属する[[引数]]があり、
構文上は区別できませんが[[引数]]名によって区別できるようになっていると思われます
(が明記されていません)。

[6] 種別としては、次の値が認められています。[[大文字・小文字不区別]]です。 [SRC[>>2, >>1]]
[FIG(short list)[
- [CODE(HTTP)[[[*]]]]
- [CODE(HTTP)[[[Cream]]]]
- [CODE(HTTP)[[[Half-and-half]]]]
- [CODE(HTTP)[[[Whole-milk]]]]
- [CODE(HTTP)[[[Part-Skim]]]]
- [CODE(HTTP)[[[Skim]]]]
- [CODE(HTTP)[[[Non-Dairy]]]]
- [CODE(HTTP)[[[Vanilla]]]]
- [CODE(HTTP)[[[Almond]]]]
- [CODE(HTTP)[[[Raspberry]]]]
- [CODE(HTTP)[[[Chocolate]]]]
- [CODE(HTTP)[[[Whisky]]]]
- [CODE(HTTP)[[[Rum]]]]
- [CODE(HTTP)[[[Kahlua]]]]
- [CODE(HTTP)[[[Aquavit]]]]
- [CODE(HTTP)[[[Sugar]]]]
- [CODE(HTTP)[[[Xylitol]]]]
- [CODE(HTTP)[[[Stevia]]]]
]FIG]

;; 値が定義されていますが、その詳細な意味は規定されていません。

[10] [[引数]]の意味や処理方法は規定されていません。

* 文脈

[13] [CODE(HTTP)@en[[[Accept-Additions:]]]] [[ヘッダー]]は [[HTCPCP]]
の[[要求]]で使用できます [SRC[>>2]]。

[14] この[[ヘッダー]]は複数回指定できます。

* 処理モデル

[12] [CODE(HTTP)@en[[[Accept-Additions:]]]] の要求に応えられない[[鯖]]は、
[CODE(HTTP)[[[406]]]] [[応答]]を返すことができます [SRC[>>11]]。

[18] [[HTCPCP-TEA]] において [CODE(HTTP)@en[[[Accept-Additions:]]]]
[[ヘッダー]]で指定された添加物の組み合わせが不適切とみなされる時は、
[CODE(HTTP)[[[403]]]] [[応答]]を返すことができます [SRC[>>19]]。

[15] 同じ値を複数指定できるのかは不明です。複数指定すると複数回注入するかもしれません。

* 歴史

[7] [[RFC 2324]] の [[ABNF]] 構文では種別は [CODE(ABNF)@en[addition-range]]
または [CODE(ABNF)@en[addition-type]] と表記されており、
不整合が生じてます。定義がない [CODE(ABNF)@en[addition]] ([CODE(URI)@en[[[coffee:]]]]
[[URL]] の [[query]] の値) も同じものを参照しているつもりの可能性があります。

[17] [[RFC 4229]] は [[RFC 2324]] を出典として状態「[[informational]]」
で[[IANA登録簿]]に登録しています [SRC[>>16]]。

[REFS[
- [16] [CITE@en[RFC 4229 - HTTP Header Field Registrations]] ([TIME[2014-11-02 18:53:20 +09:00]] 版) <http://tools.ietf.org/html/rfc4229#section-2.1.3>
]REFS]