常见http头部 (一)

常见http首部:

Accept
客户端用 Accept首部来通知服务器可以接受哪些媒体类型。 Accept首部字段的值
是客户端可以使用的媒体类型列表。如果Web浏览器无法显示Web上所有的多媒
体对象类型,就可以在请求中包含 Accept首部,这样浏览器就不会去下载它无法
使用的视频或其他对象类型了。
为了防止服务器有多种版本的媒体类型,还可以在 Accept首部字段中包含一个质
量值(q值)列表,用以告知服务器它优选哪种媒体类型。

类型 请求首部
注释 ""是个特殊值用来通配媒体类型。比如,“/”表示所有类型
image/
”表示所有的图片类型。
举例
Accept: text/, image/
Accept: text/*, image/gif, image/jpeg: q=1

Accept-Charset
客户端用 Accept- Charset首部来通知服务器它可以接受哪些字符集或哪些是优选
字符集。这个请求首部的值是个字符集列表和所列字符集可能的质量值。当服务器
上有以多种可接受字符集表示的文档时,可以通过质量值告知服务器哪个字符集是
优选的。

类型 请求首部
注释 与 Accept首部一样,“”是个特殊字符。如果有“”,就表示除了
显式地用值设置的字符集之外的所有字符集。如果没有“*”,那么值
字段中没有设置的所有字符集的q值都默认为零,这不包括字符集iso
-latin-1,它的默认值为1

基本语法 Accept-Charset: 1#((charset | “*”) [";" “q” “=” qvalue]

举例 Accept-Charset: iso-latin-1

Accept-Encoding
客户端用 Accept- Encoding首部来告知服务器它可以接受哪些编码方式。如果服
务器所持有的内容是经过编码的(可能是压缩过的),这个请求首部可以告诉服务器
客户端是否会接受它。
请求首部 类型
基本语法 Accept- Encoding:1#( content- coding|"*n) [";" “q” “=” qvalue]

举例
Accept-Encoding:
Accept-Encoding: gzip
Accept-Encoding: compress;q=0. 5, gzip; q=1

Accept-Language
和其他 Accept首部一样,客户端可以通过 Accept- language请求首部通知服务
器可接受或优选哪些语言(比如,内容所使用的自然语言)。
类型 请求首部
基本语法 Accept- Language:1#(1 anguage- range …

举例 Accept-Language: en
Accept-Language: en-gb;q=0.5

Accept-Ranges
首部与其他 Accept首部不同—它是服务器使用的一种响应首
部,用来告知客户端它们是否接受请求资源的某个范围。如果这个首部有赋值的话,
这个值就说明了服务器允许对指定资源的哪个范围类型进行访问。
客户端可以在没有收到这个首部的情况下,对某资源发起范围请求。如果服务器不
支持对那个资源的范围请求,可以以适当的状态码进行响应,将 Accept- Ranges
的值设置为none。服务器可以为普通请求发送none值,这样客户端以后就不会发
起范围请求了。

类型 响应首部
基本语法 Accept- Ranges:1# range-unit|none
举例 Accept-Ranges: none
Accept-Ranges: bytes

Age
Age首部可以告诉接收端响应已产生了多长时间。对于原始服务器是在多久之前产
生的响应或是在多久之前向原始服务器再次验证响应而言,这是发送端所做的最好
的猜测。首部的值是发送端所做的猜测,以秒为单位递增。
类型 响应首部
5注释 HTTP/11缓存必须在发送的每条响应中都包含一个Age首部。

基本语法 Age: delta-seconds
举例 Age: 60

Allow首部用于通知客户端可以对特定资源使用哪些HTTP方法。
类型 响应首部
注释 发送405MethodNotAllowed响应的HTTP/.1服务器必须包含A11ow

基本语法 A11ow:# Method
举例 A11ow: GET, HEAD

Authorization
是由客户端发送的用来向服务器回应自己的身份验证信息客户端收到来自服务器的401响应后要在其请求中包含该首部

基本语法 Authorization : 类型,认证param
举例 Authorization: basic pYW4tdG90dHk6T3ch

Cache-Control
Cache-Contro1首部用于传输对象的缓存信息。这个首部是HTTP/11引入的比较
复杂的首部之一。它的值是一个缓存指令,给出了与某个对象可缓存性有关的缓存
第7章简要介绍了缓存,还说明了与这个首部有关的特定细节

举例
Cache-Control: no-cache

client-ip

Client-ip首部是一些比较老的客户端和代理使用的扩展首部,用来传输运行客户
端程序的计算机P地址

注释 实现者应该了解这个首部的值所提供的信息是不安全的。
基本语法client-ip:ip
举例 C1ient-ip:209.1.33.49

connection
是个多少有点儿过载了的首部,它可能会把你搞晕。这个首部用
于扩展了keep-alive连接的HTTP/1.0客户端,keep-alive连接用于控制信息。

HTTP/1.1中,能识别出大部分较老的语义,但这个首部被赋予了新的功能。

在HTTP/1.1中,Connection首部的值是一个标记列表,这些标记对应各种首部名称。应用程序收到带有 tion首部的HTP/11报文
后,应该对列表进行解析,并删除报文中所有在 Connection首部列表中出现过的首部。它主要用于有代
理网络环境,这样服务器或其他代理就可以指定不应传递的逐跳首部了。
c1ose是一个典型的标记值。这个标记意味着响应结束之后,连接会被关闭。不
支持持久连接的HTP/1.1应用程序要在所有请求和响应中插入带有c1ose标记的

虽然RFC2616没有专门声明将 keep-alive作为连接标记使用,有些
注释 (包括那些将HTTP/1.1作为版本号发送的)浏览器还是会在发起请求时

基本语法 Connection:1#( connection- token)
举例 Connection: close

Content-Base
服务器可以通过 Content-Base首部为响应主体部分中要解析的URL指定一个基
础URL。Content-Base首部的值是一个绝对URL,可以用来解析在实体内找到的相对URL。
注释 2068是一个较早的HTTP/1规范草案,已经从官方规范中删除了。
举例
Content-Base: absoluteURL
Content-base:http://www.joes-hardware.com/

Content-Encoding
Content- Encoding首部用于说明是否对某对象进行过编码。通过对内容进行编
码,服务器可以在发送响应之前将其进行压缩。 Content- Encoding首部的值可以
告诉客户端,服务器对对象执行过哪种或哪些类型的编码。有了这个信息,客户端
就可以对报文进行解码了。有时服务器会对某个实体进行多种编码,在这种情况下,必须按照执行的顺序将编码列出来

基本语法
Content-Encoding: 1# content-coding
举例
Content-Encoding: gzip

Content-Language
首部用来告诉想要理解对象的客户端,应该理解哪种自然语
言。比如说,一篇用法语编写的文档就应该有一个表示法语的 Content- Language
值。如果在响应中没有提供这个值,对象就是提供给所有用户的。首部值中有多种
语言就说明对象适用于使用所列各种语言的用户

这里需要说明的是,这个首部的值可能只表示了此对象目标用户的自然语言,而不
是对象中包含的所有或者任意一种语言。而且,此首部并不局限于文本或书面数据513
对象;图像、视频和其他媒体类型也可以用其目标用户的自然语言来标识

基本语法 Content- Language:1#1 anguage-tag
举例
Content-Language: en
Content-Language: en, fr

Content-Length
ontent- Length首部说明实体主体部分的长度或尺寸。如果对 Head Http请求
的响应报文中有这个首部,此首部的值就表示如果发送的的话,实体主体部分的长
度(实际上并不发送主体)。

基本语法 Content- ength:1*DIGT
举例
Content-Length: 2417

content-Location
ontent-Location首部包含在一个HTTP报文中,给出了与报文的实体部分相对
应的URL。对可能有多个URL的对象来说,响应报文中可以包含一个 Content
-location首部,说明用来产生响应的对象的URL。 Content- Location可以与所
请求的URL不同。服务器通常会用它将客户端导向或重定向到一个新URL上去

如果URL是相对的,就应该相对于 Content-Base首部加以解释。如果没有提供
Content-Base首部,就应该使用请求中的URL。
类型
实体首部
基本语法
Content-Location: (absoluteURL relativeURL
举例
Content-location:http://www.joes-hardware.com/index.html

Content-MD5
Content-MI5首部是服务器用来对报文主体进行报文完整性检查的。只有原始服务
器或发起请求的客户端可以在报文中插入 Content-MD5首部。首部值是(可能需
要编码的)报文主体的MD5摘要。6
通过这个首部的值可以端到端地检查数据,在检查传输过程中是否对数据进行了无
意的修改时非常有用。不应该将其用于安全目的。
RFC1864更详细地定义了这个首部。

注释 根据RFC1864的定义,MD5摘要值是一个Base-64(参见附录E)或128位的MD5摘要

基本语法
Content-MD5: md5-digest
举例
Content-MD5: Q2h1Y2sgSW51ZWDIAXR5IQ=

Content-Range
请求传输某范围内的文档时,产生的结果由 Content- Range首部给出。它提供了
请求实体所在的原始实体内的位置(范围),还给出了整个实体的长度
如果值为“*”,而不是整个实体的长度,就意味着发送响应时,长度未知。

注释 以206 Partial Content响应码进行响应的服务器,不能包含将“*”作为首部。

Content -Range : 范围
举例
ontent-Range: bytes 500-999/5400

content-Type
明了报文中对象的体类
举例:
Content-Type:text/html

Cookie
Cookie首部是用于客户端识别和跟踪的扩展首部。
Cookie: ink=IUOK164Y59BC708378908CFF890E5573998A115

Cookie2
Cookie2首部是用于客户端识别和跟踪的扩展首部。 Cookie2用于识别请求发起者
能够理解哪种类型的 Cookie。在RFC2965中对其进行了更加详细的定义

Cookie2: $Version=“1”

Date
Date首部给出了报文创建的日期和时间。服务器响应中要包含这个首部,因为缓存
在评估响应的新鲜度时,要用到这个服务器认定的报文创建时间和日期。对客户端
来说,这个首部是可选的,但包含这个首部会更好
通用首部
类型
基本语法pate:mrp-date
Date: Tue, 3 Oct 1997 02: 15: 31 GMT
举例
HTTP有几种特定的日期格式。这种格式是在RFC822中定义的,这是
HTTP/1.1报文的优选格式。但在早期的HTP规范中,没有明确说明
日期的格式,因此服务器和客户端的实现者使用了一些其他格式,为了
解决这些遗留问题仍然需要支持这些格式。你可能会碰到RFC850中
说明的那些日期格式, asctime()系统调用产生的日期格式。下面是用
这些格式所表示的上述日期:
Date: Tuesday, 03-Oct-97 02: 15: 31 GMT RFC 850 format
Date: Tue Oct 3 02: 15: 31 1997 asctime() format

ETag
ETag首部为报文中包含的实体提供了实体标记。实体标记实际上就是一种标识资源
的方式。
第15章曾探讨过实体标记及其与资源之间的关系。

基本语法ETag: entity-tag
举例
ETag:“11e92a-457b-31345aa”
ETag:W/"11e92a-457b-3134b5aa

Expect
客户端通过 Expect首部告知服务器它们需求某种行为。现在此首部与响应码100 Continue紧密相关
如果服务器无法理解 Expect首部的值,就应该以状态码417 Expectation Failed进行响应
基本语法
Expect: 1# (100-continue expectation-extension)

Expect: 100-continue

Expires
Expires首部给出了响应失效的日期和时间。这样,像浏览器这样的客户端就可以
缓存一份副本,在这个时间到期之前,不用去询问服务器它是否有效了。
第7章曾讨论过 Expire首部的用法—尤其是,它是如何与缓存关联,怎样与原
始服务器进行响应再验证的。

基本语法 Expires:Hrp-date
举例
Expires: Thu, 03 Oct 1997 17: 15: 00 GMT

From 说明请求来自何方。

使用/填充这个首部存在潜在的隐私问题。客户端实现者在请求报文中包含这个首
部之前,应该通知用户,请他们作出选择。有些人会去收集不请自来的邮件报文中
携带的电子邮件地址,这可能造成潜在的滥用。因此,未做声明就将此首部广播出
去的实现者一定会非常懊悔,他们不得不向愤怒的用户说抱歉。

基本语法From: mailbox

举例
From: slurp@inkt

Host
客户端通过Host首部为服务器提供客户端想要访问的那台机器的因特网主机名和
端口号。主机名和端口号来自客户端所请求的URL
只要服务器能够在同一台机器(即,在同一个IP地址)上提供多个不同的主机名,
服务器就可以通过Host首部,根据主机名来区分不同的相对URL。

注释
HTTP/1.1客户端必须在所有请求中包含Host首部。所有的HTP/11
服务器都必须以400 Bad Request状态码去响应没有提供Hoet首部的
客户端。

基本语法Hogt:host[":"port]
举例
Hostwww.hotbotcom80

If-Modified-since
It- odified- Since请求首部用来发起条件请求。客户端可以用GET方法去请求
服务器上的资源,而响应则取决于客户端上次请求此资源之后,该资源是否被修改过。
如果对象未被修改过,服务器会回送一条304 Not Modified响应,而不会回送此资
源。如果对象被修改过,服务器就会像对待非条件GET请求一样进行响应。
基本语法
If-modified-siNce: Http-date
举例
If-Modified-Since: Thu, 03 Oct 1997 17: 15: 00 GMT

if-Match
与If- Modified- Since首部类似,If- Match首部也可以用于发起条件请求。
I- Match请求使用的是实体标记,而不是日期。服务器将对比If- Match首部的
实体标记与资源当前的实体标记,如果标记匹配,就将对象返回。
服务器应该用 If-Match值“”与某资源拥有的所有实体标记进行匹配。除非服
务器上没有这个资源了,否则“
”总会与实体标记相匹配。

基本语法If- Match:("*n1# entity-tag)
举例
If-Match: 1le92a-457b-31345aa

if-None-Match
与所有If首部一样,工f-None- Match首部可以用于发起条件请求。客户端为服务
器提供一个实体标记列表,服务器将这些标记与它拥有的资源实体标记进行比较,
只在都不匹配的时候才将资源返回。
这样缓存就可以只在资源已被修改的情况下才更新。通过rf- None-Match首部,
缓存可以用一条请求使它拥有的实体失效,同时在响应中接收新的实体。

基本语法f-None- Match:(n*n |1# entity-tag)

举例
If-None-Match: 11e92a-457b-31345aa

if-Range
首部可以用于发起条件请求。应用程序拥有某范围
与所有rf首部一样,If- Range
内资源的副本,它要对范围进行再验证,如果范围无效的话,要获取新的资源,在
这种情况下会使用这个首部。

基本语法 If-range: (Http-date entity-tag)
举例
If-Range: Tue, 3 Oct 1997 02: 15: 31 GMT
If-Range: 11e92a-457b-3134b5aa

if-Unmodified-Since
和if-modified-Since首部是一对“双胞胎”。在请求中包含此首部就可以发起条件请求。服务器应该去查看首部的日期值,只有在从该
首部提供的日期之后,对象都未被修改过,才会返回对象

基本语法 If-unmodified-since:http-date
举例
If-Unmodified-since: Thu, 03 Oct 1997 17: 15: 00 GMT

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值