AKSTIANYE

Oct 19, 2018

rfc2616_section-14

本文主要对http协议中的header参数做一个清单,主要包括参数的格式及解释
1. Accept

Accept指明客户端可以接收什么样的媒体格式

  • 格式
    Accept: media-range[accept-params],…

  • media-range:媒体类型 type/* | type/subtype | */*
    eg:text/html

  • accept-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
  • 格式
OLDER > < NEWER