2024年3月9日发(作者:)

20 头域

头域的语法描述在7.3节。本节列出了头域的全部列表,包括了语法注释,含义,和用

法。通过本节,我们使用[HX.Y]指当前HTTP/1.1 的RFC2616[8]的规范的X.Y节。每

个头域都有示例给出。

关于与方法和proxy处理有关的头域字段在表2和表3中有处理。

“where”列描述了在头域中能够使用的请求和应答的类型。这列的值是:

R:头域只能在请求中出现;

r:头域只能在应答中出现;

2xx,4xx,等等:一个数字的值区间表示头域能够使用的应答代码。

c:头域是从请求拷贝到应答的。

如果”where”栏目是空白,表示头域可以在所有的请求和应答中出现。

“proxy”列描述了proxy在头域上的操作

a:如果头域不存在,proxy可以增加或者连接头域

m:proxy可以修改现存的头域值

d:proxy可以删除头域值

r:proxy必须能读取这个头域,因此这个头域不能加密。

接下来6个栏目与在某一个方法中出现的头域有关:

c:条件;对头域的要求依赖于消息的内容

m:头域是强制要有的。

m*:头域应当被发送,但是客户端/服务端都需要准备接收没有这个头域的消息。

o:头域是可选的。

t:头域应当被发送,但是客户端/服务端都需要准备接收没有这个头域的消息。

客户端/服务端都需要准备接收没有这个头域的消息。如果通讯的协议是基于面向

流的协议(比如TCP),那么头域值必须被发送。

*:如果消息体不为空,那么头域值就绪要的。(细节请参见20.14,20.15和7.4

节)

-:这个头域是不适用的。

“Optional”意味着这个元素可以在请求或者应答中包含这个头域,并且UA可以忽略在

请求或者应答中存在的这个头域(这条规则有一个例外,就是Require头域,在20.32

节有描述)。”mandatory”(强制)头域是必须在请求中存在的头域,并且也必须是UAS

接收到一个请求时能够理解的头域。一个强制头域必须也在应答中出现,并且UAC也

能处理这个头域。”Not applicable”(不适用)意味着头域不能在请求中出现。如果一个

UAC错误的把这个头域放在请求中,在UAS收到的时候必须被忽略。同样的,如果应

答中的”不适用”的头域,也就是说UAS不能在应答中放置的头域,如果出现了,那么

UAC也必须在应答中忽略掉这个头域。

一个UA必须忽略他们所不能处理的扩展的头参数。

本规范也定义了常用的头域名的缩写,用于缩小消息的大小。

在Contact,From,To头域中都包含一个URI。如果这个URI包含一个逗号,问号或

者分毫,那么这个URI必须使用尖括号括起来(<和>)。所有的URI参数都必须在这些

括号内。如果URI并非用尖括号括起来的,那么用分号分开的参数将被视同与header

参数而不是URI参数。

20.1 Accept

Accept头域的语法定义遵从[H14.1]。除了如果没有Accept头域,服务器应当认为

Accept缺省值是application/sdp以外,语义也是和HTTP/1.1类似的语义。

空的Accept头域意味着不接受任何格式。