本文概述
在本节中, 我们将讨论各种HTTP参数及其语法。例如, 日期和时间格式, 字符集等。这些参数用于在编写客户端或服务器的HTTP程序时构造请求和响应消息。
HTTP的各种参数如下:
HTTP版本
为了指示协议的版本, HTTP使用<major>。<minor>编号方案。协议版本控制策略允许发送方指示消息的格式及其理解进一步HTTP通信的能力。
HTTP版本字段中的第一行指示HTTP消息的版本。
句法
HTTP-Version = "HTTP" "/" 1*DIGIT "." 1*DIGIT
例
HTTP / 1.1
实体标签
实体标签用于比较来自同一请求资源的两个或多个实体。
句法
entity-tag = [ weak ] opaque-tag
weak = "W/"
opaque-tag = quoted-string
实体标签在与特定资源关联的所有实体版本中必须是唯一的。
日期/时间格式
日期/时间格式可以通过两种方式定义:
1)完整日期:
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
在HTTP中, GMT完全等于UTC(世界标准时间), 在前两种格式中通过包含“ GMT”来表示。
2)三角洲秒
HTTP标头的某些字段允许使用时间值, 该时间值指定为整数秒数, 该时间值将在接收到消息的时间之后以十进制表示。
delta-seconds = 1*DIGIT
统一资源标识符(URI)
URI是格式简单的不区分大小写的字符串, 其中包含用于标识网站或Web服务器的名称, 位置等。
句法:
http_URL = "http:" "//" host [ ":" port ] [ abs_path [ "?" query ]]
这里,
- “ http”方案用于通过HTTP协议定位网络资源。
- 如果端口为空, 则假定端口为80。如果abs_path为空, 则等效于aabs_pathof“ /”。 “不安全”和“保留”集中的字符等同于其“ %% HEX HEX”编码。
- 主机名的比较必须不区分大小写。
例:
http://abc.com:80/~smith/home.html
http://ABC.com/%7Esmith/home.html
http://ABC.com:/%7esmith/home.html
字符集
字符集用于指定用户喜欢的字符集。使用逗号, 可以分隔多个字符集。 HTTP字符集使用不区分大小写的标记来标识。
charset = token
例
ISO-8859-1
Or
US-ASCII
内容编码
内容编码值用于显示已应用于实体的编码转换。首先, 内容编码用于允许对文档进行压缩或转换而不会丢失信息。在内容编码中, 实体以编码形式存储, 直接传输, 并且只有其编码的接收者。
content-coding = token
内容编码的所有值都不区分大小写。在“接受编码”和“内容编码”标头字段中, HTTP / 1.1使用内容编码值。
例
Accept-encoding: gzip
or
Accept-encoding: compress
转移编码
传输编码的值用于指示已应用于实体以确保通过网络的“安全传输”的编码转换。传输编码与内容编码不同。传输编码是消息的属性, 而不是原始实体。
句法:
transfer-coding = "chunked" | transfer-extension
transfer-extension = token *( ";" parameter )
在传输编码中, 参数采用属性/值对的形式。
例:
Parameter = attribute "=" value
Attribute = token
Value = token | quoted-string
传输编码的所有值都不区分大小写。
产品代币
产品令牌使通信应用程序可以通过软件的版本和名称来标识自己。产品令牌应指向重点且简短。
句法
product = token ["/" product-version]
product-version = token
例
User-Agent: CERN-LineMode/2.15 libwww/2.17b3
Server: Apache/0.8.4