HTTP学习记录(六-3)HTTP首部

                             第六章 HTTP首部

上一篇:HTTP学习记录(六-2)HTTP首部

下一篇:HTTP学习记录(七)确保WEB安全的HTTPS

六、实体首部字段

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

1、Allow

首部字段Allow用于通知客户端能够支持Request-URI指定资源的所有Http方法。当服务器接收到不支持的HTTP方法时,会以状态码405 MethodNot Found作为响应返回。与此同时,还会把所有能支持的HTTP方法写入首部字段Allow后返回。

2、content-encoing

首部字段content-encoing会告知客户度那服务器对实体部分选用的内容编码方式。内容编码是指在不丢失实体信息的前提下所进行的压缩。

3、Content-Language

首部字段Content-Lannguage会告知客户端,实体主体使用的自然语言(指中文或英文等语言)

4、Content-Length

首部字段content-Length表明了实体主体部分的大小(单位是字节)。对实体主体进行内容编码传输时,不能再使用Content-Length首部字段

5、Content-location

首部字段Content-Location给出与报文主体部分对应的URI。和首部字段Location不同,该字段表示的是报文主体返回资源对应的URI。

比如,对于使用首部字段Accept-Language的服务器驱动型请求,当返回的页面内容与实际请求的对象不同时,首部字段Content-Location内会写明

6、Content-MD5

首部字段Content-MD5是一串由MD5算法生成的值,其目的在于检查报文主体在传输过程中是否保持完整,以及确认传输到达。

对报文主体执行MD5算法获得128位二进制数,再通过Base64编码后将结果写入content-MD5字段值。由于HTTP首部无法记录二进制值,所以要通过Base64编码处理。为确保报文的有效性,作为接收方的客户端会对报文主体在执行一次MD5算法。计算出的值与字段值作比较后,即可判断出报文主体的准确性。但是采用这种方法,对内容上的偶发性改变是无从查证的,也无法检测出恶意篡改。

7、Content-Range

针对范围请求,返回响应时使用的首部字段Content-Range,能告知客户端作为响应返回的实体的哪个部分符合范围请求。字段值以字节为单位,表示当前发送部分及整个实体大小。

8、Content-Type

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

9、Expires

首部字段Expires会将资源失效的日期告知客户端。缓存服务器在接收到含有首部字段Expires的响应后,会以缓存来应答请求,在Expires字段值指定的时间之前,响应的副本会一直被保存。当超过指定的时间后,缓存服务器在请求发送过来时,会转向源服务器请求资源。

源服务器不希望缓存服务器对资源缓存时,最好在Expires字段内写入与首部字段Date相同的时间值。但是,当首部字段Cache-Control有指定max-age指令时,会优先处理max-age指令。

10、Last-Modified

首部字段Last-Modified指明资源最终修改的时间。一般来说,这个值就是Request-URI指定资源被修改的时间。但类似使用CGI脚本进行动态数据处理时,该值有可能会变成数据最终修改时的时间。

七、为cookie服务的首部字段

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

1、Set-Cookie

当服务器准备开始管理客户端的状态时,会事先告知各种信息。

Expires属性

Cookie的Expires属性指定浏览器可发送Cookie的有效期。当省略Expires属性时,七有效期仅限于维持浏览器会话(session)时间段内。这通常限于浏览器应用程序被关闭之前。另外,一旦cookie从服务器端发送至客户端,服务器端就不存在可以显式删除cookie的方法。但可以通过覆盖已过期的cookie,实现对客户端cookie的实质性删除操作。

Path属性

cookie的path属性可用于限制指定cookie的发送范围的文件目录。不过另有办法可以避开这项限制。

domain属性

通过cookie的domain属性指定的域名可做到与结尾匹配一致。即包含该结尾域名片段的域名都可以发送cookie。因此,除了针对具体指定的多个域名发送cookie之外,不指定domain显得更安全。

Secure属性

cookie的secure属性用于限制web页面仅在HTTPS安全连接时,才可以发送cookie,指定secure属性的方法如下

当省略secure属性时,不论是HTTP还是HTTPS,都会对cookie进行回收。

HTTPONly属性

cookie的HTTPOnly属性是cookie的扩展功能,它使js脚本无法获得cookie,其主要目的为防止跨站脚本攻击(XXS)对cookie的信息窃取。发送HTTPOnly属性的cookie的方法如下

通过上述设置,通常从web页面内还可以对cookie进行读取操作。但使用js的document.cookie就无法读取附加HTTPOnly属性后的cookie的内容了。因此,也就无法在XXS中利用js劫持cookie了。

2.Cookie

首部字段coolie会告知服务器,当客户端想要获取HTTP状态管理支持时,就会在请求中包含从服务器接收到的cookie。接收到多个cookie时,同样可以以多个cookie形式发送。

八、其他首部字段

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

1、X-Frame-Options

首部字段X-Frame-Options属于HTTP响应首部,用于控制网站内容在其他web网站的frame标签内的显示问题,其主要目的是为了防止点击劫持攻击。首部字段X-Frame-Options有以下两个可指定的字段值:

DENY:拒绝

SAMEORIGIN:仅同源域名下的页面匹配时许可。

2、X-XSS-Protection

首部字段X-XSS-Protection属于HTTP响应首部,它是针对跨站脚本攻击的一种对策,用于控制浏览器XSS防护机制的开关。可指定的字段值如下

0:将XSS过滤设置成无效状态

1:将XSS过滤设置成有效状态

3、DNT

首部字段DNT属于HTTP请求首部,其中DNT是Do Not Track的简称,意为拒绝个人信息被收集,是表示拒绝被精准广告追踪的一种方法。首部字段DNT可指定的字段值如下

0:同意被追踪

1:拒绝被追踪

由于首部字段DNT的功能具备有效性,所以web服务器需要对DNT做对应的支持。

4.P3P

首部字段P3P属于HTTP响应首部,通过P3p(在线隐私偏好平台)技术,可以让web网站上的个人隐私变成一种仅供程序可理解的形式,以达到保护用户隐私的目的。要进行P3P的设定,须按照以下步骤

(1)创建P3P隐私

(2)创建P3P隐私对照文件后,保存命名在/w3c/p3p.xml

(3)从P3p隐私中新建Compact policies后,输出到HTTP响应中

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

皓月星辰_w

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值