Oct 19, 2018
rfc2616_section-14
本文主要对http协议中的header参数做一个清单,主要包括参数的格式及解释
1. Accept
Accept指明客户端可以接收什么样的媒体格式
格式
Accept: media-range[accept-params],…media-range
:媒体类型 type/* | type/subtype | */*
eg:text/htmlaccept-params
: 附加参数 eg: q=0.8其中media-range以
,
分割。media-range与accept-params用;
连接诸如type/*指大类下的全部小类
q指优先级,范围[0-1],默认1,数字越大优先级越高,服务器在能够返回的类型中应当优先返回优先级高的媒体格式
媒体类型可以被更具体的媒体类型覆盖
eg: text/*,text/html 后者将会覆盖前者,等同具有更高的优先级q因子的取值是某种媒体类型找到的最高优先级媒体类型的q值,即最具体的媒体类型的q值。
若无Accept字段,则认为所有的媒体类型都可以接受
若服务器无法返回Accept中指定的任一类型,应当返回406 (not acceptable)
2. Accept-Charset
Accept-Charset指明客户端可以接收什么样的字符集
- 格式
Accept-Charset: ( charset | * ) [q=value], … - q指优先级,范围[0-1],默认1,数字越大优先级越高
- 若存在特殊值*,则匹配所有字符集,包括ISO-8859-1
- 若不存在*,则未显式指定的字符集q值为0。ISO-8859-1除外,为1。
- 若不存在Accept-Charset字段,则认为所有字符集均可接受
- 若服务器无法返回Accept-Charset中指定的任一字符集,应当返回406 (not acceptable)
3. Accept-Encoding
- 格式
Accept-Encoding: ( codings | * ) [q=values], … - 如果服务器的编码在Accept-Encoding的指定中且q!=0,则该编码可用
- 特殊*匹配所有未明确列出的编码方式
- 如果多个指定的编码都可接受,则使用其中q值最高的返回
identity
默认是被接受的,除非显式拒绝,如identity;q=0
或*;q=0
。当Accept-Encoding为空时,则认为只接受identity
编码- 当有Accept-Encoding字段时,服务器无法以指定的编码返回,应当返回406 (not acceptable)
- 当无Accept-Encoding字段时,服务器认为客户端可以接受任意编码,若identity在服务器可用,则应当使用identity,除非其他编码更合适,如有额外内容需要返回.
- 当无Accept-Encoding字段时,且identity在服务器不可用时,可以考虑http1.0通常能够接受的编码,如(gzip,compress)等
- 有时一些旧客户端发送的内容与Accept-Encoding指定的编码不一致时,可以考虑以内容来判断返回什么编码
- http1.0在Accept-Encoding中不支持q值,所以q值的功能在x-gzip、x-compress中是无效的,也是不允许的.
4. Accept-Language
- 格式
Accept-Language: (language | *) [q=value], … - q值为优先级,范围[0-1],默认为1,数字越大优先级越高
- 语言与指定的language完全匹配或者前缀匹配(即-之前完全匹配),都认为匹配
- 特别的*匹配所有
- 前缀匹配不意味着语言也如此分配,即不认为用户理解带特定标签的语言,也会理解所有带该标签的语言
- q的值应当为最长匹配语言的q值
- 若无Accept-Language,则服务器认为所有语言都可接受
- 若有Accept-Language,则服务器认为所有指定的并且q值大于0的语言可接受
- 在请求中携带用户的完整语言信息可能会有隐私的问题,建议客户端给出语言偏好选择,若选择被禁用,则不应该在请求头中携带语言信息
- 用户不了解语言匹配的规则,客户端应当给与用户一定的引导
5. Accept-Ranges
- 格式
17. Content-Type
- 格式