Http协议(续)

请求头

(1)Accept

用于指定客户端能够处理的MIME类型,如Accept:text/html,image/*

(2)Accept-Charset

用于指出客户端程序可以使用的字符集。

(3)Accept-Encoding

用于指定客户端能够进行解码的数据编码方式,通常指某种压缩方式

(4)Accept-Language

用于指定客户端期望服务器返回那个国家语言的文档。可以指定多个国家的语言。

(5)Authorization

当客户端访问口令受保护的文件时,服务器会返回401状态码和WWW-Authenticate响应头,要求客户端使用Authorization请求头来应答。WWW-Authenticate响应头指定了2种认证方式,分别为BASIC和DIGEST。对于BASIC验证方式,客户端需要用Base64编码的方式将用户名和密码发送给服务器如zxx:123456编码后发送应该如:Authorization:Basic enh4OjEyMzQ1Ng==,Base64编码很容易解码,相当于明文发送。如果使用DIGEST验证方式,服务器首先向客户端发送一些验证信息(一个随机字符串)和一个附加信息(一个指定的值),浏览器将这些信息和用户名,密码和一些其他信息(客户端随机产生的一个字符串)混合后执行MD5算法,最终将产生的结果和先前的大部分信息发送给服务器,服务器通过用户名取到保存的密码,然后与客户端一样执行MD5算法,比较产生的结果是否与传过来的结果一致。这种方式提高了安全性。

(6)Expect

用于指定客户端请求服务器采取的特殊行动,目前设置值只有100-continue,用于询问服务器是否可以在后面请求中发送一个文档。

(7)From

用于指定请求发送者的E-mail地址,只被一些特殊的Web客户端程序使用,浏览器不会使用。

(8)Host

用于指定资源所在的主机名与端口号,如果端口号为连接服务器所使用的端口号,则可以省略,在HTTP1.1中,浏览器和其他客户端发送的每个请求消息中必须包含Host请求头字段,用于区分虚拟Web站点,哪怕没有虚拟Web站点,也要设置一个空值。

(9)If-Match

用于检测网页内容是否更新,服务器在传送文件内容给客户端时,可以传送一些代表实体内容的头字段,成为实体标签,当客户端再次访问这个网页文件的内容时,使用If-Match字段附带以前缓存的实体标签内容,如果客户端使用的是GET请求,服务器检索if-Match字段里面的实体标签,并于当前服务器代表这个网页文件内容的实体标签进行比较(可以理解为游戏的客户端与服务器的版本号,不一样就该更新了),一样则代表网页内容没有更改,客户机使用缓存的网页内容,否则返回新的网页文件和新的实体标签。如果为PUT请求方式,则表示服务器上的网页需要更新,依旧判断标签是否相等,如果相等则代表网页文件没有更改,客户端可以更新,如果不一样则代表网页文件已经被修改过,不允许PUT方法成功执行,防止多人维护一个网页时,产生覆盖的情况,可以理解为SVN版本管理时产生了冲突。

(10)If-Modified-Since

当服务器传送一个网页文件给客户端时,还会将改文件的最后修改时间等信息一并传送,客户端将这些信息都缓存起来,当客户端再次请求这个网页文件时,将这个最后修改时间和服务器的最后修改时间进行比较,如果一样,则表示没有发生修改,返回状态码304表示浏览器版本是最新的,如果不一样,则返回状态码200和新的网页文件内容,客户端将旧的缓存文件舍去,保存新的文件。

(11)If-None-Match

与If-Match作用相反,只有当服务器上没有任何一个资源的Etag属性值和If-None-Match所列出的项相匹配时,服务器才会返回资源。

(12)If-Range

If-Range头字段伴随着Range头字段一起使用,其值可以是实体标签或者GMT格式的时间。当值为实体标签时,与服务器该文件的实体标签比较,若相等,则返回Range头字段指定的部分内容,否则返回当前网页所有内容;当时间为GMT格式时间时,服务器自从这个时间以来没有发生过更改,则返回指定部分内容,否则返回当前网页所有内容。

(13)If-Unmodified-Since

这个字段一般用于PUT方式,其值为HTTP的GMT时间格式,表示只有服务器上对应文件的修改时间比给出的时间早,PUT方式进行,说简单点就是服务器的资源是旧的,本地资源要新些,所以要更新服务器资源。

(14)Max-Forwards

这个头字段表示当前请求可以途径的代理服务器的数量,每配置一个,值减一,当减为0时还没有到底最终服务器,就由当前代理服务器对客户见进行最终响应。

(15)Proxy-Authorization

针对代理服务器的用户信息认证。用法与Authorization相同。

(16)Range

指定返回文档中的部分内容,对较大文档的断点续传非常有用。如在一次请求中收到部分内同就中断了,可以在第二次请求中,使用Range要求返回中断位置以后的内容。Range头的3种使用格式:<1>Range:bytes=100-599:返回第100个字节到第599个字节之间的内容;<2>100-:返回第100个字节以后的所有内容;<3>-100:返回文档种的最后100个字节的内容。

(17)Referer

浏览器向服务器发出的请求,可以是在浏览器地址栏输入URL,也可以是点击一个超链接,对应使用超链接的情况,浏览器发送Referer头,可以让服务器知道本次请求的起源URL地址。比如,了解那些网站的广告有效这些用处。但不能过分依赖Referer头字段,用户可以使用Telnet这样的客户端程序伪造一个Referer头。

(18)TE

用于指定客户机可接受的扩展传输编码类型(除chunked之外的类型)和使用chunked传输编码类型时是否允许使用Trailer字段(可以使头字段放在实体内容后),即每个chunck分段内容的后面是否允许有头字段。可以组合使用"trailers"和允许扩展传输编码类型,相互之间用逗号(,)分隔。

(19)User-Agent

User-Agent用于指定浏览器的类型和名称,便于服务器针对不同的类型的浏览器返回不同的内容。

响应头

(1)Accept-Range

用于说明当前Web服务器是否接受Range请求和Range请求种指定的数据的单位纳。如:(1)Accept-Range:none 不接受Range请求(2)Accept-Range:bytes接受以byte为单位的Range请求。

(2)Age

Age头字段用于指出当前网页文档可以在客户机或代理服务器种缓存的有效时间,设置值是一个以秒为单位的时间。当客户机再此访问缓存了的文档时,用当前时间减去上次返回文档时设置的Date头字段时间值,与Age值判断比较。

(3)Etag

用于向客户机传送代笔实体内容特征的标记信息,这些信息成为实体标签,也就是之前说明的请求头里面提及的实体标签。

(4)Location

Location头字段用于通知用户去哪个新地址去获取文档,以便客户机自动重新连接到新地址并检索文档,由于当前并没有直接返回内容给客户机,因此响应消息种不能出现实体内容。消息头种不能同时出现Location和Content-Type头字段。

(5)Proxy-Authenticate

针对代理服务器的用户信息认证,与WWW-Authenticate头字段完全相同。

(6)Retry-After

用于告诉客户机可以在什么时间重复发出刚才的请求。

(7)Server

用于指定服务器软件的产品名称。

(8)Vary

用于指定影响了服务器生成的响应内容的请求头字段,如:Vary:Accept-Language

如果上次的Accept-Language为en-gb,而这次为zh-cn,则客户机依旧不能使用缓存,必须向服务器请求,它作为了一个是否能使用缓存的条件。

(9)WWW-Authenticate

联合请求头Authorization一起看,前面已经说明过。

实体头

(1)Allow

用于指定客户端请求的资源所支持的请求方法,它通常伴随着405(Method Not Allowed)状态码一起使用。

(2)Content-Encoding

用于指定实体内容的压缩编码方法。更加Accept-Encoding请求头来指定。

(3)Content-Language

用于指定返回的网页文档的国家语言类型。

(4)Content-Length

用于指定响应实体内容的长度,在持续性连接非chunked编码时必不可少,用于区分上一个响应的结束与下一个响应的开始。只有POST,DELETE,PUT有实体内容。

(5)Content-Location

用于指定响应消息种所封装的实体内容的实际位置路径。不能简单地认为响应消息中实体内容的位置路径就是请求资源的路径。

(6)Content-MD5

用于指定实体内容的MD5算法算出的数字摘要的base64编码的结果。保证实体内容在网络传输中意外损坏的检查,但并不能防止黑客的恶意攻击。简单来说,服务器发送前,算一次,客户机接受后,算一次,然后比较。

(7)Content-Range

用于指定服务器返回的部分实体内容的位置信息,只有客户机使用了Range请求头要求服务器返回实体的部分内容时,服务器的响应头才包含Content-Range。如:Content-Range:bytes 2543-4532/7898:从2543字节到4532字节,整体大小为7898字节。

(8)Content-Type

浏览器接受到的数据都是一堆二进制数据,服务器通过这个字段告诉浏览器接受到的实体内容代表哪种格式的数据。客户端可以通过Content-Type知道类型,而服务器读取的文件通常在本地磁盘上读取,它知道这个文件的MIME类型是通过Web.xml配置的,一个扩展名与一个MIME类型对应,如下格式:

如果Content-Type没有设置响应内容所使用的字符集编码,则默认使用ISO-8859-1(Latin)编码。

(9)Expires

用于指定当前文档在什么时候过期,必须设置为GMT格式,如果格式不正确,特别是干脆设置为“0”时,客户端认为当前网页已过期,有些旧的浏览器对Pragam头字段支持不可靠,又不能识别Cache-Control,因此使用Expires。

(10)Last-Modified

用于指定文档的最后更改时间,值为GMT格式。

扩展头

(1)Refresh

  • <1>Refresh:1 浏览器1秒后刷新页面
  • <2>Refresh:1;url=...... 浏览器1秒后跳转到其他网页

(2)Content-Disposition

如果浏览器不直接处理响应的实体内容,而是让用户选择将响应的实体内容保存到一个文件中,则需要使用这个Content-Disposition头字段,指定接收程序如何处理数据内容,有2种方式,inline和attachmnet,inline表示直接处理,attachmnet要求用户干预并控制接收程序如何处理,只有attachmnet为标准方式。如果指定为attachmnet,后面还可以指定filename参数,不要目录,直接给文件名,设置之前必须指定Content-Type头字段。如下:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值