Parameters
本章将列出一些重要的HTTP协议参数及其语法,就像它们在通信中的使用方式一样。 例如,日期格式,URL格式等。这将帮助您在编写HTTP客户端或服务器程序时构建请求和响应消息。 在学习HTTP请求和响应的消息结构时,您将在后续章节中看到这些参数的完整用法。
HTTP版本
HTTP使用《major》.《minor》编号方案来指示协议的版本。 HTTP消息的版本由第一行中的HTTP-Version字段指示。 以下是指定HTTP版本号的一般语法:
HTTP-Version = "HTTP" "/" 1*DIGIT "." 1*DIGIT
例子 (Example)
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为“/”。 除reserved和unsafe集合之外的字符等同于它们的“”%“HEX HEX”编码。
例子 (Example)
以下三个URI是等效的:
http://abc.com:80/~smith/home.html
http://ABC.com/%7Esmith/home.html
http://ABC.com:/%7esmith/home.html
Date/Time Formats
所有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。
例子 (Example)
以下是有效的字符集:
US-ASCII
or
ISO-8859-1
or
ISO-8859-7
内容编码
内容编码值表示在通过网络传递内容之前已经使用编码算法对内容进行编码。 内容编码主要用于允许压缩文档或以其他方式有用地转换文档而不丢失身份。
所有内容编码值都不区分大小写。 HTTP/1.1使用Accept-Encoding和Content-Encoding头字段中的内容编码值,我们将在后续章节中看到。
例子 (Example)
以下是有效的编码方案:
Accept-encoding: gzip
or
Accept-encoding: compress
or
Accept-encoding: deflate
媒体类型
HTTP使用Content-Type和Accept标头字段中的Internet媒体类型,以提供开放和可扩展的数据类型和类型协商。 所有媒体类型值都在Internet分配号码机构(IANA)中注册。 指定媒体类型的一般语法如下:
media-type = type "/" subtype *( ";" parameter )
类型,子类型和参数属性名称不区分大小写。
例子 (Example)
Accept: image/gif
语言标签
HTTP使用Accept-Language和Content-Language字段中的语言标记。 语言标记由一个或多个部分组成:主要语言标记和可能为空的子标记系列:
language-tag = primary-tag *( "-" subtag )
标签内不允许有空格,所有标签都不区分大小写。
例子 (Example)
示例标签包括:
en, en-US, en-cockney, i-cherokee, x-pig-latin
其中任何两个字母的主要标签是ISO-639语言缩写,任何两个字母的初始子标签是ISO-3166国家代码。