Accept标头参数中的媒体子类型参数

时间:2014-08-07 20:43:43

标签: http http-headers http-accept-header

Accept HTTP标头能够为它引用的每种媒体类型指定参数。

text/html;level=2;q=0.4, */*;q=0.5

是否可以引用一个参数,使其包含其他不允许的字符?

目前这主要是一个思想实验,但这是我的用例:

考虑一种假设的多部分媒体类型。称之为multipart/multiformat。它有几个预定义的部分,称之为apartbpart。每个部分都可以是任何有效的媒体类型。

我希望能够做的是基本上模仿媒体类型参数中的Accept标头。例如:

multipart/multiformat;apart="text/html, */*;q=0.8";bpart="text/*", */*;q=0.4

在上面的示例中,引号旨在允许参数中的任何内容。当然,即使这有效,如果我们想将multipart/multiformat媒体类型用作顶级{{1}的一部分,我们也会再次出现相互矛盾的问题(这次使用双引号)文件。 Yay递归。

我正在尝试做什么?有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

是的,媒体类型参数的值可以是带引号的字符串:

media-type     = type "/" subtype *( ";" parameter )
type           = token
subtype        = token

(见http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.7

其中“参数”可以是:

parameter               = attribute "=" value
attribute               = token
value                   = token | quoted-string

(见http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.6

所以你提到的具体例子肯定是语法上有效的。

multipart/multiformat;apart="text/html, */*;q=0.8";bpart="text/*", */*;q=0.4