HTTP笔记
2017-08-02 本文已影响9人
carolwhite
通信传输流
Screen Shot 2017-08-01 at 4.33.21 PM.pngHTTP报文
- HTTP报文:用于HTTP协议交互的信息。请求端的HTTP报文叫做请求报文,相应端的叫做响应报文。大致分为报文首部和报文主体两块,两者由空行(CR+LF)划分,通常并不一定有报文主体。
Screen Shot 2017-08-01 at 9.56.04 AM.png
- 请求行:包含用于请求的方法,请求URI和HTTP版本。
- 状态行:包含表明响应结果的状态码,原因短语和HTTP版本。
-
首部字段:包含表示请求和响应的各种条件和属性的各类首部。
Screen Shot 2017-08-01 at 10.01.50 AM.png
报文主体和实体主体的差异
Screen Shot 2017-08-01 at 10.15.02 AM.pngHTTP状态返回码
Screen Shot 2017-08-01 at 1.49.51 PM.pngHTTP首部字段
Screen Shot 2017-08-01 at 4.07.50 PM.png Screen Shot 2017-08-01 at 4.07.56 PM.png首部字段类型
首部字段根据实际用途分为以下4类。
1.通用首部字段:请求报文和响应报文都会使用的首部。
2.请求首部字段:从客户端向服务器发送请求报文时使用的首部。补充了请求的附加内容,客户端信息,响应内容相关优先级信息。
3.响应首部字段:从服务端向客服端返回响应报文时使用的首部。补充了响应的附加信息,也会要求客户端附加额外的内容信息。
4.实体首部字段:针对请求报文和响应报文的实体部分使用的首部。补充了资源内容更新时间等与实体有关的信息。
首部字段结构
HTTP首部字段是由首部字段名和字段值组成,中间由冒号“:”分割。
首部字段名:字段值
Content-Type: text/html
Keep-Alive: timeout =15, max = 100
HTTP首部字段一览
-
通用首部字段
Screen Shot 2017-08-01 at 4.15.08 PM.png -
请求首部字段
- 响应首部字段
- 实体首部字段
通用首部字段
1.Cache-control:控制缓存的行为
缓存请求指令
![Screen Shot 2017-08-01 at 4.42.47 PM.png](https://img.haomeiwen.com/i1485048/59b5b6d97c710f66.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)缓存响应指令
Screen Shot 2017-08-01 at 4.42.47 PM.png2.Conection:控制不再转发给代理的首部字段,管理持久连接。
- 控制不再转发给代理的首部字段
Connection:不再转发的首部字段名
- 管理持久连接
Connection: close # HTTP/1.1以后都是持久连接
Conntection: Keep-Alive # HTTP/1.1之前的都是非持续连接
3.Prama:为了兼容HTTP /1.1之前版本的历史遗留问题
该字段,只用在客户端发送的请求中,客户要求所有的中间服务器不返回缓存的资源。
Cache-Control: no-cache #一般会有2个首部字段
Prama: no-cache
4.Upgrade:用于检测HTTP协议及其他协议是否可使用更高的版本通信,其参数值可以用来指定一个完全不同的通信协议。
Screen Shot 2017-08-02 at 12.09.28 AM.pngUpgrade首部字段产生作用的Upgrade对象仅限于客户端和邻接服务器之间。因此使用首部字段Upgrate时还需要额外指定Connection:Upgrate。
对于附有首部字段Upgrate的请求,服务器可用101SwitchingProtocal状态码作为响应返回。
5.Waring:通知用户一些与缓存的相关的问题的警告。
Screen Shot 2017-08-02 at 12.22.39 AM.png Screen Shot 2017-08-02 at 12.23.07 AM.png Screen Shot 2017-08-02 at 12.23.32 AM.png请求首部字段
1.Accept:通知服务器,用户能够处理的媒体类型及媒体类型的相对优先级。使用type/subtype形式。
Screen Shot 2017-08-02 at 1.16.31 PM.png若要设置优先级,用q=来额外表示权重值, q范围为0~1,";"隔开
Accept:text/html ;q = 0.5, text/plain
2.Host:若虚拟主机运行在同一个IP,因此会使用Host加以区分。首部字段Host会告知服务器,请求的资源所处的互联网主机名和端口号。
3.Range:告知服务器资源的指定范围
Range: bytes =5001 -10000
接受到附带Range首部字段请求的服务器,会在处理请求之后返回状态206Partial Content的响应。无法处理该范围请求时,则返回状态码200OK的响应全部资源。
响应首部字段
1.ETag:能告诉客户端实体标识。是一种可将资源以字符串形式做唯一标识的方式。服务器会为每份资源分配对应的Tag值。
2.Location:可以将响应接受方引导至某个与请求URL位置不同的资源。该字段基本配合3xx:Redirection响应,提供重定向的URL。
3.Vary:当代理服务器收到带有Vary首部字段指定获取资源的请求时,如果使用的Accept-Language字段的值相同,那么久直接从缓存返回响应。反正,需要从 源服务器端获取资源后才能作为响应返回 。
Vary:Accept-Language