HTTP - 参数

  • 简述

    本章将列出一些重要的 HTTP 协议参数及其在通信中使用的语法。例如,日期格式、URL 格式等。这将帮助您在编写 HTTP 客户端或服务器程序时构建请求和响应消息。在学习 HTTP 请求和响应的消息结构的同时,您将在后续章节中看到这些参数的完整用法。
  • HTTP 版本

    HTTP 使用一个 <major>.<minor>编号方案以指示协议的版本。HTTP 消息的版本由第一行中的 HTTP-Version 字段指示。以下是指定 HTTP 版本号的一般语法:
    
    HTTP-Version   = "HTTP" "/" 1*DIGIT "." 1*DIGIT
    

    例子

    
    HTTP/1.0
    or
    HTTP/1.1
    
  • 统一资源标识符

    统一资源标识符 (URI) 是简单格式化的、不区分大小写的字符串,包含名称、位置等,用于标识资源,例如网站、Web 服务等。 用于 HTTP 的 URI 的一般语法如下:
    
    URI = "http:" "//" host [ ":" port ] [ abs_path [ "?" query ]]
    
    这里如果 port 为空或未给出,HTTP 假定端口为 80,并且为空 abs_path 相当于一个 abs_path的 ”/”。中的字符以外的字符reservedunsafe 集等效于它们的“%”HEX HEX 编码。

    例子

    以下三个 URI 是等效的:
    
    http://abc.com:80/~smith/home.html
    http://ABC.com/%7Esmith/home.html
    http://ABC.com:/%7esmith/home.html
    
  • 日期/时间格式

    所有 HTTP 日期/时间戳都必须以格林威治标准时间 (GMT) 表示,无一例外。允许 HTTP 应用程序使用以下三种日期/时间戳表示中的任何一种:
    
    Sun, 06 Nov 1994 08:49:37 GMT  ; RFC 822, updated by RFC 1123
    Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036
    Sun Nov  6 08:49:37 1994       ; ANSI C's asctime() format
    
  • 字符集

    我们使用字符集来指定客户端喜欢的字符集。可以列出多个字符集,以逗号分隔。如果未指定值,则默认为 US-ASCII。

    例子

    以下是有效的字符集:
    
    US-ASCII
    or
    ISO-8859-1
    or 
    ISO-8859-7
    
  • 内容编码

    内容编码值表示在通过网络传递内容之前已使用编码算法对内容进行编码。内容编码主要用于允许在不丢失身份的情况下压缩或以其他方式有用地转换文档。
    所有内容编码值都不区分大小写。HTTP/1.1 在 Accept-Encoding 和 Content-Encoding 标头字段中使用 content-coding 值,我们将在后续章节中看到。

    例子

    以下是有效的编码方案:
    
    Accept-encoding: gzip
    or
    Accept-encoding: compress
    or 
    Accept-encoding: deflate
    
  • 媒体类型

    HTTP 使用 Internet 媒体类型 Content-TypeAccept头字段以提供开放和可扩展的数据类型和类型协商。所有媒体类型值都在互联网号码分配机构 (IANA) 中注册。指定媒体类型的一般语法如下:
    
    media-type     = type "/" subtype *( ";" parameter )
    
    类型、子类型和参数属性名称不区分大小写。

    例子

    
    Accept: image/gif
    
  • 语言标签

    HTTP 使用语言标签 Accept-LanguageContent-Language领域。语言标签由一个或多个部分组成:一个主要语言标签和一系列可能为空的子标签:
    
    language-tag  = primary-tag *( "-" subtag )
    
    标签内不允许有空格,所有标签都不区分大小写。

    例子

    示例标签包括:
    
    en, en-US, en-cockney, i-cherokee, x-pig-latin
    
    其中任何两个字母的主标签是 ISO-639 语言缩写,任何两个字母的初始子标签是 ISO-3166 国家/地区代码。