📜  HTTP-参数

📅  最后修改于: 2020-12-14 05:19:29             🧑  作者: Mango


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

HTTP版本

HTTP使用编号方案来指示协议的版本。 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 ]]

在此,如果端口为空或未指定端口,则将端口80假定为HTTP,并且空的abs_path等效于abs_path的“ /”。保留不安全集中的字符以外的其他字符等效于其“”%“ 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标头字段中使用内容编码值,我们将在后续章节中看到。

以下是有效的编码方案:

Accept-encoding: gzip

or

Accept-encoding: compress

or 

Accept-encoding: deflate

媒体类型

HTTP在Content-TypeAccept标头字段中使用Internet Media Types,以提供开放的和可扩展的数据类型以及类型协商。所有媒体类型值都已向Internet分配号码授权机构(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国家/地区代码。