首先我们知道,HTTP报文由报文首部 + 空行(CR+LF) +报文主体构成,我们 重点讨论一下,HTTP报文首部由哪几个字段构成。
1、HTTP请求报文和响应报文
- 请求报文首部
- 请求行:方法、URL、HTTP版本
- HTTP首部字段
- 请求首部字段
- 通用首部字段
- 实体首部字段
- 其他
- 请求报文首部
- 状态行:HTTP版本、状态码
- HTTP首部字段
- 响应首部字段
- 通用首部字段
- 实体首部字段
- 其他
2、四种HTTP首部字段类型
(1)通用首部字段:请求报文和响应报文都会使用的首部。例如:
- Cache-Control
- Connection
- Date
(2)请求首部字段:从客户端向服务端发送请求报文时使用的首部。补充了请求的附加内容,客户端信息,响应内容相关优先级等信息。例如
- Accept
- Accept-Charset
- Accept-Encoding
- Accept-Language
- Host
- if-Match (比较实体标记Etag)
- if-Modified-Since
- if-None-Match
- Referer
(3)响应首部字段:从服务端向客户端返回响应报文时使用的首部。补充了响应的附加内容,也会要求客户端附加额外的内容信息。例如
- Accept-Ranges
- Etag
- Location (令客户端重新定向至指定URL)
(4)实体首部字段:针对请求报文和响应报文的实体部分使用的首部,补充了资源内容更新时间等与实体有关的信息。例如:
- Allow (资源可支持的HTTP方法)
- Content-Encoding
- Content-Language
- Content-Length
- Content-Location (替代对应资源的URL)
- Content-Type
- Expires
- Last-Modified
3、为Cookie服务的首部字段
- Set-Cookie : 开始状态管理时所使用的Cookie信息,在响应首部字段
- NAME=VALUE:赋予Cookie名称和其值
- expires=DATE: 浏览器可发送Cookie的有效期
- path=PATH:限制指定Cookie的发送范围的文件目录
- domain=域名:通过domain指定的域名可做到与结尾匹配一致,例如当指定example.com后,除了example.com以外,www.example.com或www2.example.com等都可以发送Cookie
- secure:限制Web仅在HTTPS安全连接的时候,才可以发送Cookie
- HttpOnly:使javascript脚本无法获得Cookie,其主要目的是防止XSS对Cookie的窃取
- Cookie: 服务器接收到的Cookie信息,在请求首部字段
4、其他首部字段
- X-Frames-Options:属于HTTP响应首部,控制网站内容在其他Web网站的Frame标签内的显示问题,主要目的是为了防止点击劫持攻击
- X-XSS-Protection:属于HTTP响应首部,针对XSS的一种对策,0:将XSS过滤设置成无效状态;1:将XSS过滤设置成有效状态
- DNT:属于HTTP请求首部,拒绝个人信息被收集
- P3P:属于HTTP响应首部,让Web网站上的个人隐私变成一种仅供程序可理解的形式,以达到保护用户隐私的目的