HTTP协议请求字段与响应字段

一、请求头字段: 请求首部字段是从客户端到服务器发送请求报文中所使用的字段,里面包含了附加信息、客户端信息以及对响应内容相关的优先级等内容。
1、Accept 通知服务器用户代理可处理的媒体类型及媒体类型的相对优先级,可使用type/subtype这种形式,一次指定多种媒体类型。
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
q表示权重,默认值为1.0,当服务器提供多种内容时,将会有优先返回权重值最高的媒体类型。
2、Accept-Cherset 通知服务器用户代理支持的字符集及字符集的相对优先级,可一次性指定多个字符集。 该首部字段可用权重q值来表示相对优先级。 该首部字段应用于内容协商机制的服务器驱动协商。
Accept-Charset: iso-8859-5, unicode-1-1;q=0.8
3、Accept-Encoding 告知服务器用户代理支持的内容编码及内容编码优先级顺序,可一次性指定多种内容编码。
Accept-Encoding: gzip, deflate
常用的几种编码格式:
gizp:由文件压缩程序gzip(GUN zip)生成的编码格式。
compress:由UNIX文件压缩程序compress生成的编码格式。
deflate:组合使用zlib格式及由deflate压缩格式生成的编码格式。
jdentity:不执行压缩或不会变化的默认编码格式。
这里可以使用q值表示相对优先级,也可以使用(*)作为通配符,指定任意的编码格式。
  4、Accept-Lanuage 告知服务器用户代理能够处理的自然语言集,以及其相对有限集,可一次指定多种自然语言集。 同样可使用权重值q表示相对优先级。
Accept-Lanuage: zh-cn,zh;q=0.7,en=us,en;q=0.3
5、Authorization 告知服务器用户代理的认证信息(证书值)。 通常想要通过验证的用户代理会在接受到第一次返回的401状态码响应后,把首部字段加入请求中,共用缓存接收到含有该字段的请求时操作处理会有所差异。
6、Expect 客户端使用该字段告知服务器,期望出现某种特定行为。 如果服务器无法理解期望作出回应而发生错误,会返回状态码417Expect Failed,客户端可以利用该字段,写明所期望的扩展。
http/1.1规范值定义了100-continue。
Expect: 100-continue
7、From 告知服务器使用用户代理的用户垫子邮件地址。
目的:显示搜索引擎等用户代理的负责人的电子邮件联系方式 。
From: IMyalost@163.com
8、Host 告知服务器请求的资源所处的互联网主机名和端口号。 Host首部字段是在HTTP/1.1规范内唯一一个必须被包含在请求内的首部字段。
Host: www.baidu.com
9、If-Match 格式如If-xxx这样的请求首部字段,都可以称之为条件请求,服务器收到请求,只有判定条件为真时,才会执行请求。 该字段告知服务器匹配资源所用的实体标记(ETag)值,这时无法使用弱ETag值。 如果判断条件不为真,则返回412Precondition Failed响应。 还可以使用(*)指定If-Match的字段值,这种情况下服务器将忽略ETag值,只要资源存在就处理请求。
If-Match: "123456"
10、If-Modified-Since 条件请求,告知服务器若字段指定值早于资源更新时间,则希望能处理请求,如果在该字段指定的日期时间大于资源更新时间 ,则返回304Not Modified响应。 用于确认代理或者客户端拥有的本地资源的有消息。
If-Modified-Since: Thu, 15 Apr 2004 00:00:00 GMT
11、If-None-Match 条件请求,和If-Match作用相反。当该字段值的实体标记(ETag)值与请求资源的ETag不一致时,告知服务器处理该请求。 在GET或HEAD方法中使用该字段可获取最新的资源。
12、If-Range 条件请求,告知服务器若指定的值和请求资源的值一致,则作为范围请求处理,反之,则返回全部资源。
request:                                                   response:
GET /index.html                                         206 Partial Content
If-Range: "123456"                                    Content-Range: bytes 5001-10000/10000
Range: bytes=5001-10000                        Content-Length:5000
上面的请求和资源匹配一致,那么就作为范围请求处理。
13、If-Unmodified-Since 条件请求,该字段和If-Unmodified-Since字段作用相反,作用是告知服务器,指定的请求资源只有在字段值内指定的日期之后,未发生更新的情况下,才能处理请求。 如指定时间之后发生更新,则返回412 Precondition  Failed作为响应返回
If-Unmodified-Since: Thu, 03 Jul 2016 00:00:00 GMT
14、Max-Forwards 使用http协议通信时,请求可能会经过代理等多台服务器,如果由于某些原因导致请求转发失败,那么客户端收不到响应,我们对此一无所知。 通过TRACE或者OPTIONS方法,发送包含该字段的请求时,该字段以十进制整数形式指定可经过的服务器最大数目, 简单来讲,就是指定Max-Forwards的值,每经过一次转发,就-1,当值变为0,直接返回响应。
Max-Forwards: 10
15、Proxy-Authorization 收到代理服务器发来的认证质询时,客户端向代理服务器发送包含首部字段的请求,以告知服务器所需要的认证的信息。
Proxy-Authorization: Basic dGLwoPNLAGKGFY5
16、Range 对于只需获取部分资源的范围请求,包含首部字段Range即可告知服务器资源的指定范围。接收到附带Range字段的服务器,会返回206Partial Content的响应;无法处理请求时,则返回200 OK的响应及全部资源。
Range: bytes=5001-10000
17、Referer 告知服务器请求的原始资源的URI。
Referer:www,baidu.com/index.xml
18、TE 告知服务器客户端能够处理响应的传输编码方式及相对优先级。
TE:gzip, deflate;q=0.5
该字段还可以指定伴随trailer字段的分块传输编码的方式。
TE:trailers  
19、User-Agent 该字段会将创建请求的浏览器和用户代理名称等信息传给服务器。 如果由网络爬虫发起请求,可能会在请求中添加爬虫作者的垫子邮件地址。因此,如果请求经过代理,那么中间也很可能被添加上代理服务器名称。
User-Agent: Mozilla/5.0 (windows NT 6.1; WOW64; rv13.0) Gecko/=20100101 Firfox/13.0.1
二、响应头字段: 服务器向客户端返回响应报文中所使用的字段,用于补充的附加信息、服务器信息、以及对客户端的附加要求等。
1、Accept-Ranges 告知客户端服务器能否处理范围请求,以指定获取服务器的某部分资源。
可指定的字段值分2种:
(1)bytes:可处理范围请求
(2)none:不能处理范围请求
Accept-Ranges: bytes
2、Age 告知客户端源服务器创建响应多久了,单位S。 若创建响应的是缓存服务器,该字段指缓存后响应再次发起认证到认证完成的时间值,此时,必须加上首部字段Age。
Age: 600
3、ETag 告知客户端实体标识。 这是一种将资源以字符串形式做唯一标识的一种方式,服务器会为没份资源分配对应的ETag值。 另外,当资源更新时,ETag值也需要更新。
ETag: "82e22293907ce725faf67773957acd12"
(1)强ETag值和弱ETag值
强ETag值:不论实体发生多么细微的变化,都会改变其值。
ETag: "usagi-1234"
弱ETag值: 只提示资源是否相同;只有资源发生了根本改变,产生差异才会改变ETag值,此时,会在字段值最开始处附加W/。
ETag: W/"usagi-1234"
4、Location 将响应接受方引导至某个与请求URI位置不同的资源。 基本上该字段都会配合3xx:Redirction的响应,提供重定向的URI
Location: http://www.usagidesign.jp/sample.html
5、Proxy-Authenticate 把代理服务器所要求的认证信息发给客户端,他的认证行为在客户端与代理间进行。
Proxy-Authenticate: basic realm="Usagidesign Auth"
6、Retry-After 告知客户端在多久之后再次发送请求,主要配合状态码503 Service Unavailable响应,或者3XX Redirect响应一起使用。
字段值可以指定具体的日期时间(Wed, 04 Jul 2012 06: 34: 24 GMT等格式),也可以是创建响应后的秒数。
Retry-After: 120  
7、Server 告知客户端当前服务器上安装的http服务器应用程序的信息。其中包含软件应用名称,甚至版本号和安装时的启动项。
Server: Apache/2.2.17(Unix)
Server: Apache/2.2.6(Unix) PHP/5.2.5
8、Vary 控制缓存。源服务器向代理传达关于本地缓存使用方法的命令。 客户端收到从代理服务器收到的从源服务器返回的包含该字段指定项的响应之后,若再次进行缓存,仅对请求中含有相同字段的请求返回缓存。
Vary: Accept-Language
9、WWW-Authenticate HTTP访问认证。告知客户端适用于访问请求URI所指定资源的认证方案和带参数提示的查询。 状态码401 Unauthorized响应中,肯定包含该字段。  
10、Content-Encoding:服务器通过这个头告诉浏览器数据的压缩格式。 
11Content-Length:服务器通过这个头告诉浏览器回送数据的长度。
12、Content-Type:服务器通过这个头告诉浏览器回送数据的类型。
13、Last-Modified:告诉浏览器当前资源的最后缓存时间。 
14、Refresh:告诉浏览器隔多久刷新一次。
15、Content-Disposition:告诉浏览器以下载方式打开数据。 
16、 Transfer-Encoding :告诉浏览器数据的传送格式。 
17、状态行:用于描述服务器对请求的处理结果。 
18、状态码
100~199:表示成功接收请求,要求客户端继续提交下一次请求才能完成整个处理过程。 
200~299:表示成功接收请求并已完成整个处理过程。常用200。 
300~399:为完成请求,客户需进一步细化请求。例如:请求的资源已经移动一个新地址、常用302,307和304。
400~499:客户端的请求有错误,常用404(意味着你请求的资源在web服务器中没有)403(服务器拒绝访问,权限不够)。 
500~599:服务器端出现错误,常用500 。
多个响应头:响应头用于描述服务器的基本信息,以及数据的描述,服务器通过这些数据的描述信息,可以通知客户端如何处理等一会儿它回送的数据。 
三、 三种禁止浏览器缓存的头字段: 
Expires:告诉浏览器把回送的资源缓存多长时间 -1或0则是不缓存 。
Cache-Control:no-cache 
Pragma:no-cache 
服务器通过以上两个头,也就是控制浏览器不要缓存数据 。
实体内容:代表服务器向客户端回送的数据。
四、 http状态码及表示的状态信息 
200(正常) 
表示一切正常,返回的是正常请求结果。 
302/307(临时重定向) 
指出被请求的文档已被临时移动到别处,此文档的新的URL在Location响应头中给出。 
304(未修改) 
表示客户机缓存的版本是最新的,客户机应该继续使用它。 
403(禁止) 
服务器理解客户端请求,但拒绝处理它。通常由于服务器上文件或目录的权限设置所致。 
404(找不到) 
服务器上不存在客户机所请求的资源。 
500(内部服务器错误) 
服务器端的CGI、ASP、JSP等程序发生错误。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值