ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

《图解HTTP》05:HTTP首部(下)

2019-08-17 11:01:55  阅读:153  来源: 互联网

标签:HTTP 请求 05 首部 字段 Cookie 服务器 图解 客户端


请求首部字段

请求首部字段是从客户端往服务器端发送请求报文中所使用的字段,用于补充请求的附加信息、客户端信息、对于响应内容相关的优先级等内容。

Accept

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept首部字段可通知服务器,用户代理能够处理的媒体类型及媒体类型的优先级。可使用type/subtype这种形式,一次指定多种媒体类型。
若想要给显示的媒体类型增加优先级,则使用q=来额外表示权重值,用分号;进行分隔。权重值q的范围是0~1(可精确到小数点后3位),且1为最大值。不指定权重q值时,默认权重为q=0。当服务器提供多种内容时,将会首先返回权重值最高的媒体类型。

Accept-Charset

Accept-charset:ios-8859-5,unicode-1-1;q=0.8
Accept-Charset首部字段可用来通知服务器用户代理支持的字符集及字符集的优先顺序。另外,可一次性指定多种字符集。与首部字段Accept相同的是可用权重q值来表示相对优先级。
搞首部字段应用于内容协商机制的服务器驱动协商。

Accept-Encoding

Accept-Encoding:gzip,deflate
该首部字段用于告知服务器用户代理支持的内容编码及内容编码的优先级。可一次性指定多种内容编码(gzip/compress/deflate/identity)。
同样采用权重q值表示相对优先级。另外,也可以使用星号*作为通配符,指定任意的编码格式。

Accept-Language

Accept-Language:zh-cn,zh;q=0.7,en-us,en;q=0.3
该首部字段用于告知服务器用户代理能够处理的自然语言集(中文/英文),以及自然语言集的相对优先级。可一次性指定多种自然语言集。同样可以按权重值q来表示相对优先级。

Authorization

Authorization:Basic dwvu3n1bjpwyxnzd29yza==
该首部字段用于告知服务器,用户代理的认证信息(证书值)。

Expect

Expect:100-continue
该首部字段用于告知服务器,期待出现的某种特定行为。

From

From首部字段用于告知服务器使用用户代理的用户的电子邮件地址。

Host

Host:www.hackr.jp
首部字段Host会告知服务器,请求的资源所处的互联网主机名和端口号。Host首部字段在 HTTP/1.1 规范内是唯一一个必须被包含在请求内的首部字段。

If-Match 附带

条件请求,服务器收到附带条件的请求后,只有判断指定条件为真时,才会执行请求。

If-Modified-Since 附带

If-Modified-Since: Thu,15 Apr 2004 00:00:00 GMT
该首部字段会告知服务器若If-Modified-Since字段值早于资源的更新时间,则希望能处理该请求。即用于确认代理或客户端拥有的本地资源的有效性。获取资源的更新日期时间,可通过首部字段Last-Modified来确定。

If-None-Match 附带

只有If-None-Match的字段值与ETag值不一致时,可处理该请求。与If-Match首部字段的作用相反。
在GET或HEAD方法中使用首部字段If-None-Match可获取最新的资源。没有匹配的ETag说明没有匹配的缓存,则会返回最新的资源。

If-Range 附带

该首部字段告知服务器若指定的If-Range字段值(ETag值或者时间)和请求资源的ETag值或者时间相一致时,则作为范围请求处理。反之,则返回全体资源。

If-Unmodified-Since

If-Unmodified-Since: Thu,03 Jul 2012 00:00:00 GMT
其作用是告知服务器,指定的请求资源只有在字段值内指定的日期时间之后,未发生更新的情况下,才能处理请求。

Max-Forwards

通过TRACE方法或OPTIONS方法,发送包含首部字段Max-Forwards的请求时,该字段以十进制整数形式指定可经过的服务器的最大数目。服务器在往下一个服务器转发请求之前,会将Max-Forwards的值减1后重新赋值。当服务器接收到Max-Forwards值为0的请求时,则不再进行转发,而是直接返回响应。

Proxy-Authorization

接收代理服务器发来的认证质询时,客户端会发送包含首部字段Proxy-Authorization的请求,以告知服务器认证所需要的信息。

Range

对于只需获取部分资源的范围请求,包含首部字段Range即可告知服务器资源的指定范围。
当范围请求无法处理时,则会返回状态码200 OK的响应及全部资源。处理成功则返回206 Partial Content

Referer

首部字段Referer会告知服务器请求的原始资源的URI。这个字段可以用来防盗链。

TE

该字段告知服务器客户端能够处理的传输编码方式及相对优先级。它和首部字段Accept-Encoding的功能很像,但是用于传输编码。除此之外,该字段还可以指定trailer字段的分块传输编码的方式。应用时,只需要把trailer赋值个该字段TE:trailer

User-Agent

首部字段User-Agent会将创建请求的浏览器和用户代理名称等信息传达给服务器。

响应首部字段

响应首部字段是由服务器端向客户端返回报文中所使用的的字段,用于补充响应的附加信息、服务器信息、以及对客户端的附加要求等信息。

Accept-Ranges

Accept-Ranges:bytes:用于告知客户端服务器能否处理范围请求,以指定获取服务器端某个部分的资源。可指定的字段值有俩种,可处理范围请求时指定bytes,反之则指定none

Age

Age:600:告知客户端,源服务器在多久前创建了响应,字段值单位为秒。

ETag

该字段用于告知客户端实体标识。它是一种可将资源以字符串形式做唯一性标识的方式。服务器会为每份资源分配对应的ETag值。另外,当资源更新时,ETag值也需要更新。生成ETag值时,并没有统一的算法规则,而仅仅是由服务器来分配。
强ETag值:不论实体发生多么细微的变化都会改变其值。
弱ETag值:只用于提示资源是否相同。只有资源发生了根本改变,产生差异时才会改变ETag值。这时,会在字段值最开始处添加(W/)ETag:W/"usagi-123"

Location

使用该首部字段可以将响应接收方引导至某个与请求URI位置不同的资源。

Proxy-Authenticate

首部字段Proxy-Authenticate会把由代理服务器所要求的认证信息发送给客户端。

Retry-After

该字段告知客户端应该在多久之后再次发送请求。主要配合状态码503 Service Unavailable响应,或3XX Redirect响应一起使用。字段值可以指定为具体的日期时间,也可以是创建响应后的秒数。

Server

用于告知客户端当前服务器上安装的HTTP服务器应用程序的信息。不单单会标出服务器上的软件应用名称,还可能包括版本号和安装时启用的可选项。

Vary

该字段可对缓存进行控制。源服务器会向代理服务器传达关于本地缓存使用方法的命令。
从代理服务器接收到源服务器返回包含Vary指定项的响应后,若要再进行缓存,仅对请求中含有相同Vary指定首部字段的请求返回缓存。即使对相同的资源发起请求,但由于vary指定的首部字段不相同,因此必须要从源服务器重新获取资源。

WWW-Authenticate

该字段会告知客户端适用于访问请求URI所指定资源的认证方案(Basic或是Digest)和带参数提示的质询(challenge)。


实体首部字段

实体首部字段是包含在请求报文和响应报文中的实体部分所使用的首部,用于补充内容的更新时间等与实体相关的信息。

Allow

Allow:GET,HEAD用于通知客户端能够支持Request-URI指定资源的所有HTTP方法。
若服务器收到不支持的HTTP方法,将会返回响应405 Method Not Allowed,并把所有能支持的HTTP方法写入首部字段Allow后返回。

Content-Encoding

Content-Encoding:gzip用于告知客户端服务器对实体的主体部分选用的编码方式。内容编码是指在不丢失实体信息的前提下所进行的压缩。
主要采用四种内容编码方式:gzip / compress / deflate / identity

Content-Language

Content-Language:zh-CN用于告知客户端,实体主体使用的自然语言。

Content-Length

Content-Length:15000表明了实体主体部分的大小,对实体主体进行内容编码传输时,不能再使用Content-Length首部字段。

Content-Location

给出与报文主体部分相对应的URI。表示的是报文主体返回资源对应的URI。

Content-MD5

该首部字段是一串由MD5算法生成的值,其目的在于检查报文主体在传输过程中是否保持完整,以及确认传输到达。
客户端会对接收的豹纹主题执行同样的MD5算法,然后与首部字段Content-MD5的字段值比较。

Content-Range

Content-Range: bytes 5001-10000/10000告知客户端作为响应返回的实体的哪个部分符合范围请求。

Content-Type

Content-Type: Text/html; charset=UTF-8说明了实体主体内对象的媒体类型。和首部字段Accept一样,字段值用type/subtype形式赋值。

Expires

Expires:Wed, 04 Jul 2019 08:25:25 GMT会将资源失效的时间告知客户端。缓存服务器在接收该字段响应后,会以缓存来应答请求,在该字段指定的时间之前,响应的副本会一直被保存。当超过指定的时间后,缓存服务器在请求发送过来时,会转向源服务器请求资源。
若不需要缓存服务器对资源进行缓存,可以在Expires字段写入和Date字段相同的时间值。
当首部字段Cache-Control有指定max-age指令时,比起首部字段Expires,会优先处理max-age指令

Last-Modified

Last-Modified: Wed ,23 May 2019 09:58:25 GMT指定资源最终修改时间。


为Cookie服务的首部字段

Cookie的工作机制是用户识别及状态管理。
Web网站为了管理用户状态会通过Web浏览器,把一些数据临时写入用户的计算机内。接着当用户访问该Web网站时,可通过通信方式取回之前存放的Cookie。
调用Cookie时,由于可校验Cookie的有效期,以及发送方的域、协议等信息,所以正规发布的Cookie内的数据不会因来自其他Web站点和攻击者的攻击而泄漏。

目前使用最广泛的Cookie标准是在网景公司制定的标准上进行扩展后的产物。为Cookie服务的首部字段:

首部字段名 说明 首部类型
Set-Cookie 开始状态管理所使用的Cookie信息 响应首部字段
Cookie 服务器接收到的Cookie信息 请求首部字段

Set-Cookie

Set-Cookie字段属性

属性 说明
NAME=VALUE 赋予Cookie的名称和其值(必须项)
expires=DATE Cookie的有效期(若不明确制定则默认为浏览器关闭前为止)
path=PATH 将服务器上的文件目录作为Cookie的适用对象(若不指定则默认文档所在的文件目录)
domain=域名 作为Cookie适用对象的域名(若不指定则默认为创建Cookie的服务器的域名)
Secure 仅在HTTPS安全通信时才会发送Cookie
HttpOnly 加以限制,使Cookie不能被JavaScript脚本访问

①expires属性

指定浏览器可发送Cookie的有效期。
当省略该字段时,其有效期仅限于维持浏览器会话(Session)时间段内。即限于浏览器应用被关闭之前。
一旦Cookie从服务器端发送至客户端,服务器端就不存在可以显示删除Cookie的方法。但可以通过覆盖已过期的Cookie,实现对客户端Cookie的实质性删除操作。

②path属性

可用于限制指定Cookie的发送范围的文件目录。

③Secure

Set-Cookie:name-value;secure用于限制Web页面仅在HTTPS安全连接时,才可以发送Cookie。当省略该字段时,不论HTTP还是HTTPS,都会对Cookie进行回收。

④HttpOnly属性

该属性是Cookie的扩展功能,它使JavaScript脚本无法获得Cookie。其主要目的是为了防止跨站脚本攻击(Cross-site scripting,XSS)对Cookie的信息窃取。
Set-Cookie:name=value;HttpOnly

Cookie

Cookie:status=enable用于告知服务器,档客户端想获得HTTP状态管理支持时,就会在请求中包含从服务器接收到的Cookie。接收到多个Cookie时,同样可以以多个Cookie形式发送。


其他首部字段

HTTP首部子弹是可以自行扩展的。所以在Web服务器和浏览器的应用上,会出现各种非标准的首部字段。
常用如下:

  • X-Frame-Options
  • X-XSS-Protection
  • DNT
  • P3P

X-Frame-Options

X-Frame-Options:DENY
该字段属于HTTP响应首部,用于控制网站内容在其他Web网站的Frame标签内的显示问题。其主要目的是为了防止点击劫持攻击。
该字段有俩个字段值:
DENY:拒绝
SAMEORIGIN:仅同源域名下的页面(Top-level-browsing-context)匹配时许可。

X-XSS-Protection

X-XSS-Protection:1
该字段属于HTTP响应首部,它是针对跨站脚本攻击(XSS)的一种对策,用于控制浏览器的XSS防护机制。
该字段有俩个字段值:
0:将XSS过滤设置成无效状态
1:将XSS过滤设置成有效状态

DNT(Do Not Track)

DNT:1
该字段属于HTTP请求首部,意为拒绝个人信息被收集,是表示拒绝被精准广告追踪的一种方法。
该字段有俩个字段值:
0:同意被追踪
1:拒绝被追踪

P3P(The Platform for Privacy Prefrerences,在线隐私偏好平台)

该字段属于HTTP请求首部,通过利用该技术可以让Web网站上的个人隐私变成一种仅供程序可理解非形式。以达到保护用户隐私的目的。
进行P3P的设定,需按以下操作步骤:
①创建P3P隐私
②创建P3P隐私对照文件后,保存命名在/w3c/p3p.xml
③从P3P隐私中新建Compact policies后,输出到HTTP响应中。

标签:HTTP,请求,05,首部,字段,Cookie,服务器,图解,客户端
来源: https://blog.csdn.net/weixin_41360604/article/details/99684087

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有