本章将列出一些重要的HTTP协议参数及其语法,就像它们在通信中的使用方式一样.例如,日期格式,URL格式等.这将帮助您在编写HTTP客户端或服务器程序时构建请求和响应消息.在学习HTTP请求和响应的消息结构时,您将在后续章节中看到这些参数的完整用法.
HTTP版本
HTTP使用< major>.< minor> 编号方案,用于指示协议的版本. HTTP消息的版本由第一行中的HTTP-Version字段指示.以下是指定HTTP版本号的一般语法:
HTTP-Version = "HTTP" "/" 1*DIGIT "." 1*DIGIT
示例
HTTP/1.0 或 HTTP/1.1
统一资源标识符
统一资源标识符(URI)是简单格式化的,不区分大小写的字符串,包含名称,位置等,用于标识资源,例如,网站,Web服务等.用于HTTP的URI的一般语法如下:
URI = "http:" "//" host [ ":" port ] [ abs_path [ "?" query ]]
如果端口为空或未给出,则假定HTTP为端口80且为空 abs_path 相当于"/"的 abs_path . 保留和不安全组中的字符以外的字符等同于""%"HEX HEX"编码.
示例
以下三个URI是等价的:
http://abc.com:80/~smith/home.htmlhttp://ABC.com/%7Esmith/home.htmlhttp://ABC.com:/%7esmith/home.html
日期/时间格式
所有HTTP日期/时间戳必须以格林威治标准时间(GMT)表示,无一例外. HTTP应用程序允许使用以下三种日期/时间戳表示:
Sun, 06 Nov 1994 08:49:37 GMT ; RFC 822, updated by RFC 1123Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036Sun Nov 6 08:49:37 1994 ; ANSI C's asctime() format
字符集
我们使用字符集来指定客户更喜欢的字符集.可以用逗号分隔多个字符集.如果未指定值,则默认为US-ASCII.
示例
以下是有效字符集:
US-ASCII 或 ISO-8859-1 或 ISO-8859-7
内容编码
内容编码值表示在将内容传递到网络之前,已经使用编码算法对内容进行编码.内容编码主要用于允许压缩文档或以其他方式有效地转换文档而不会丢失标识.
所有内容编码值都不区分大小写. HTTP/1.1在Accept-Encoding和Content-Encoding头字段中使用内容编码值,我们将在后续章节中看到.
示例
以下是有效的编码方案:
接受编码:gzip 或接受编码:compress或接受编码:deflate
媒体类型
HTTP使用 Content-Type 和 Accept 标题字段中的Internet媒体类型,以提供开放和可扩展的数据类型和类型协商.所有媒体类型值都在Internet Assigned Number Authority(IANA)中注册.指定媒体类型的一般语法如下:
media-type = type "/" subtype *( ";" parameter )
类型,子类型和参数属性名称不区分大小写.
示例
Accept: image/gif
语言标签
HTTP使用接受语言和内容语言字段中的语言标记.语言标记由一个或多个部分组成:主要语言标记和可能为空的子标记系列:
language-tag = primary-tag *( "-" subtag )
标签内不允许有空格,所有标签都不区分大小写.
示例
示例标记包括:
en, en-US, en-cockney, i-cherokee, x-pig-latin
其中任何双字母主标签是ISO-639语言缩写,任何两个字母的初始子标签是ISO-3166国家代码.