HTTP首部
HTTP首部字段
-
HTTP首部字段是由首部字段名和字段值构成,中间用冒号分割
-
若HTTP首部字段重复,根据浏览器内部处理逻辑的不同,结果可能并不一致。
-
HTTP首部字段根据实际用途被分为以下4种类型
通用首部字段
请求首部字段
相应首部字段
实体首部字段 -
端到端首部,分在此类别种的首部会转发请求/响应对应的最终接收目标,且必须保存在由缓存生成的响应中。另外规定它必须转发
-
逐跳首部,分在此类别种的首部支队单次转发有效,会因通过缓存或代理而不再转发。HTTP/1.1和之后的版本,如果要使用逐跳首部,需要提供Connection首部字段。
-
通用首部字段是指请求报文和响应报文双方都会使用的首部。
-
通过指定字段Cache-Control,能操作缓存工作机制。
-
s-maxage指令功能和max-age指令相同,他们不同点是s-maxage指令只适用于供多为用户使用的公共缓存服务器。当使用s-maxage指令后,则直接忽略Expires首部字段及max-age指令的处理。
-
请求首部字段是从客户端往服务器发送请求报文种使用的字段。
-
Accept 首部字段可通知服务器,用户代理能够处理的媒体类型及媒体类型的相对优先级。可使用type/subtype这种形式。
-
若想要给显示的媒体类型增加优先级,则使用q=来额外表示权重值,用分号进行分割。权重值q的范围是0~1,可精确到小数点后3位,且1为最大值。不指定q时,默认q=1.0
-
首部Form用来告知服务器使用用户代理的用户电子邮件地址。
-
首部字段TE会告知服务器客户端能够处理想要的传输编码方式及相对优先级。它和Accept-Encoding功能很像,但是用于传输编码。
-
响应首部字段时由服务器端向客户端返回响应报文中所使用的字段。
-
Etag中有强Etag值和弱Etag值之分。强Etag值,不论发送多么细微变化都会改变其值。弱Etag值只用于提示资源是否相同。只有资源发生了根本改变,产生差异时才会改变Etag值。这时会在字段值最开始处附加W/
ETag: W/"usagi-1234"
- WWW-Authenticate用于HTTP访问认证。它会告知客户端适用于访问请求URI指定资源的认证方案和带参数提示的质询。
- 实体首部字段时包含在请求报文和响应报文中的实体部分所使用的首部,用于补充内容的更新实际等与实体相关的信息。
- 当首部字段Cache-Control有指定max-age指令时,比起首部字段Expires,会优先处理max-age。
- cookie的secure属性用于限制Web页面仅在HTTPS安全连接时,才可以发送Cookie。
Set-Cookie: name=value; secure
- 其他首部字段是可以自行扩展的。
X-Frame-Options: Deny
属于HTTP响应首部,用于控制网站内容在其他Web网站的Frame标签内显示问题。主要目的是为了防止点击劫持。X-XSS-Protection: 1
属于HTTP响应首部,它是针对xss的一种对策。0将XSS过渡设置成无效。1将XSS设成有效。- DNT 属于HTTP请求首部,其中DNT是Do Not Track的简称,意为拒绝个人信息被收集。0表示同意被追踪,1表示拒绝被追踪。
- HTTP等多种协议中,通过给非标准参数加上前缀X-,用来区别于标准参数,使那些非标准参数作为扩展变成可能。但是这种简单粗暴的做法百害而无一益,因此在一些提议中停止该做法。然而对已经在使用的X-前缀来说,不应该要求其变更。
总结
- 这章内容太多太多了,全是http首部,看起来跟看字典一样。虽然知道意思,但并不确定在实际什么场景下适合用。有些首部看起来没啥用。书上没什么实际案例,感觉应该用到了再去翻。