- HTTP报文首部
报文首部 |
---|
空行 |
报文主体 |
HTTP请求报文首部
在请求中,HTTP报文由方法,URI,HTTP版本,HTTP首部字段等部分构成。HTTP响应报文首部
在响应中,HTTP报文由HTTP版本,状态码,HTTP首部字段3部分组成-
HTTP首部字段
使用首部字段是为了给浏览器和服务器提供报文主体大小,所使用的语言,认证信息等内容。- HTTP首部字段结构
首部字段名:字段值 - 通用首部字段类型
请求报文和响应报文两方都会使用的首部。 - 请求首部字段
- 响应首部字段
- 实体首部字段
针对请求报文和响应报文的实体部分使用的首部,补充了资源内容更新时间等与实体有关的信息。
- HTTP首部字段结构
-
end-to-end首部和Hop-by-hop
- 端到端首部
分在此类别中的首部分会转发给请求/响应对应的最终接受目标,且必须保存在由缓存生成的响应中,另外规定它必须被转发。 - 逐跳首部
分在此类中的首部只对单次转发有效,会因通过缓存或代理而不再转发。
- 端到端首部
-
HTTP/1.1通用首部字段
- Cache-Control
操作缓存的工作机制。- public:表示其他用户也可利用缓存
- private:响应只能以特定的用户为对象
- no-cache:强制向源服务器再次验证缓存,防止从缓存中返回过期的资源
- no-store:不缓存请求或响应的任何内容,暗示请求或响应中包含机密信息。
- s-maxage=秒:公共缓存的最大时间界限
- max-age=秒:与上一个类似,区别是上一个是公共的,这个是针对特定用户服务器的
- min-fresh=秒:期望在指定时间内的响应仍有效,即至少未过指定时间的缓存资源
- max-stale=秒:用来接受过期的资源,没有时间是什么资源都接受,由时间是过期时间在限定内的资源
- noly-if-cached:从缓存中获取资源
- Connection
控制不再转发给代理的首部字段
管理持久连接- 控制不再转发的首部字段
就是字段值写什么,什么首部就不会被转发 - http/1.1版本的默认连接都是持久连接,为此,客户端会再持久连接上发送请求。当服务器想明确断开连接时,则指定Connection首部字段的值为Close。
- 控制不再转发的首部字段
- Date
首部字段Date表明创建HTtp报文的日期和时间。 - Pargma
历史遗留的兼容版本。不用特地记。 - Trailer
首部字段Trailer会事先说明在报文主体后记录了哪些首部字段,该首部字段可应用再HTTP/1.1版本分块传输编码时。 - Transfer-Encoding
规定了传输报文主体时所用的编码方式。
HTTP/1.1的传输编码方式仅对分块传输编码有效。 - Upgrade
用于检测HTTP协议及其他协议是否可使用更高的版本进行通信,其参数值可以用来指定一个完全不同的通信协议。 - Via
用来追踪客户端和服务器之间的请求和响应报文的传输路径。
经过代理和网关的时候,会先在首部字段Via中附加该服务器的信息,然后再进行转发。 - Warning
HTTP/1.1的Warbning告知用户一些与缓存相关的问题的警告。
Warning: 警告码 警告主机:端口 “警告内容” 日期时间
- Cache-Control
-
请求首部字段
- accept
用来告知服务器用户代理(浏览器)能够处理的媒体类型及媒体类型的相对优先级
一般用q来表示优先级的权重值,q的范围再0~1,最高是1,最低是0,可以到小数后三位。默认权重值为1 。 - accept-charset
用来通知服务器用户代理支持的字符集及字符集的相对优先顺序,另外,也支持权重值q。 - accept-Encoding
用来告知服务器用户代理(浏览器)支持的内容编码及内容编码的优先级顺序。 - Accept-Language
用来告知服务器用户代理能够处理的自然语言集,以及自然语言集的相对优先级。 - Authorization
用来进行用户代理的认证信息 。 - From
用来告知服务器使用用户代理的用户的电子邮件地址。 - Host
虚拟主机运行同一IP上,因此使用首部字段Host加以区分。 - if-Match
形如If-xxx这种形式的请求首部字段,都可称为条件请求,服务器接收到附带条件的请求后,只有判断指定条件为真时,才会执行请求。
该条件是匹配实体标记Etag - if-modified-since
是想获得该时间之后更新过的字段。 - if-none-match
与if-match相反的操作。 - if-range
if-range:“ETag”
range:bytes=
两者配合使用,可以返回范围请求,如果ETag不一致,则返回全部范围。 - if-unmodified-since
与if-modified-since相反。 - max-forwards
表示了可经过的服务器最大数目。 - proxy-Authorization
代理服务器的验证。 - Referer
会告知服务器请求的原始资源的URI。 - TE
首部字段TE会告知服务器客户端能够处理响应的传输编码方式及相对优先级,它和首部字段accept-encoding的功能很想象,但是用于传输编码。 - User-agent
首部字段user-agent会将创建请求的浏览器和用户代理名称等信息传送给服务器。
- accept
-
响应首部字段
- Accept-Ranges
用来告知客户端服务器是否能处理范围请求。
accept-ranges:bytes 是能处理
accpet-ranges:none 是不能处理。 - age
如果是源服务器,则表示是在多久前创建的响应
如果就是缓存服务器,代表 ,不太理解。。 - Etag
能告知客户端实体标识,它是一种可将资源以字符串形式做唯一性标识的方式。服务器会为每份资源分配对应的Etag值。URI相同,语言不同ETAG值不同, 就是应用的一个例子。 - 强ETag值和弱ETag值
强ETag值,不论实体发生多么细微的变化都会改变其值。
弱ETag值,只是用于提示资源是否相同,只有资源发生了根本改变,产生差异时才会改变Etag值。】 - Location
可以将响应接收放引导至某个与请求URI位置不同的资源。
一般用于重定向,强制性的。 - Proxy-Authenticate
首部字段Proxy-Authenticate会把代理服务器所要求的认证信息发送给客户端。 - Proxy-After
告知客户端应该在多久之后再次发送请求。 - Server
告知客户端服当前服务器上安装的HTTP服务器应用程序的信息,例如阿帕奇之类的。 - Vary
如果有Vary,缓存服务器只能对vary规定的值与请求的值相同时才能给客户端响应。 - WWW-Authenticate
用于HTTP访问认证,它会告知客户端适用于访问请求URI所指定资源的认证方案和带参数提示的质询。
- Accept-Ranges
-
实体首部字段
Allow
用于同通知客户端能够支持Request-URI指定资源的所有HTTP方法。Content-Encoding
会告知客户端对实体的主体部分选用的内容编码方式。Content-Language
会告知客户端,实体主体使用的自然语言。Content-Length
表明了实体的主体部分的大小,单位是字节。Content-Location
给出与报文主体部分相对应的URI。Content-MD5
客户端会对接收的报文主体执行相同的MD5算法,然后与首部字段Content-MD5的字段值比较。-
Content-Range
- Content-Range: bytes 5001-10000/10000
- 针对范围请求,返回相应时使用的首部字段Content-Range.
-
Content-Type
- Content-Type: text/html; charset=UTF-8
- Content-Type: application/x-www-form-urlencoded
- 首部字段Content-Type 说明了尸体主题内对象的媒体类型。
-
Expires
- Expires: Web, 04 jul 2012 08:26:05 GMT
- 会将资源失效的日期告知客户端。
- 缓存服务器用的。
- 当首部字段Cache-Control 有指定max-age指令时,会被max-age指令覆盖。
-
Last-Modified
- 指明资源最后修改的时间。
-
为Cookie服务的首部字段
- Set-Cookie
- NAME=VALUE
- 赋予Cookie的名称和其值
- expires=DATE
- 指定浏览器可发送Cookie的有效期
- 当省略该属性时,有效期为维持浏览器会话(session)
- path=PATH
- 将服务器上的文件目录作为cookie的适用对象。
- domain=域名
- 结尾匹配,example.com 匹配www.example.com或www2.example.com都可以
- secure
- 限制Web页面仅在HTTPS安全连接才可以发送Cookie
- HttpOnly
- true之后,使用JavaScript脚本无法获得Cookie.
- NAME=VALUE
- Cookie
- Set-Cookie
-
其他首部字段
- X-Frame-Options
- HTTP响应头,用于控制网站内容在其他web网站的的Frame标签内的显示问题。其主要目的是为了防止点击劫持攻击。
- DENY:拒绝
- SAMEORIGIN:仅同源域名下的页面匹配时许可。
- X-XSS-Protection
- X-XSS-Protection: 1
- HTTP响应头,它是针对跨站脚本攻击(XSS)的一种对策,用于控制浏览器XSS防护机制的开关。
- DNT
- DNT: 1
- HTTP请求头,Do Not Track的简称,意为拒绝个人信息被收集,是表示拒绝被精准广告追踪的一种方法。
- P3P
- P3P: CP="CAO DSP LAW CURa"
- HTTP相应首部,通过利用P3P(在线隐私偏好平台)技术,可以让Web网站上的个人隐私编程一种仅供程序可理解的形式,以达到保护用户隐私的目的。
- http://www.w3.org/TR/P3P
- X-Frame-Options