《HTTP权威指南》第三章学习总结

吃透HTTP权威指南 第三章 HTTP报文

**定个小目标,吃透这本书,每天最少一章 CSDN 见**
  1. 报文流
    HTTP报文,用来“包裹”HTTP数据的箱子,
    HTTP报文是在HTTP应用之间发送的数据块,是一些以文本形式的数据,描述了传输数据的内容,这些数据在客户端服务器和代理之间流动,简称为报文流。
    HTTP用术语流入和流出来描述事务处理的方向,客户端到服务器为流入,服务器到客户端到流出。报文会像水一样向下流动。
    客户端—>代理—>服务器—>代理—>客户端
  2. 报文的组成形式
    HTTP报文是一个简单的数据块,每条报文都包含一条来自客户端的求情,或者服务器的响应。HTTP报文包含3个部分,对报文描述的起始行(start line),包含属性的首部块(header),以及可选的包含 数据的主体
    起始行和首部都是由行分割的ASCII的文本,每行都以一个由两个字符组成的行终止序列作为结束(“\r\n\r\n”)。这个行终止序列可以写成CRLF。也有一些使用单个换行符(\n)来表示终止。HTTP的主体是和起始行和首部不同,它是一个可选的数据库(可以没有),它可以是二进制数据。首部需要给出主体的格式信息,Content-type: text/plain 行就说明了主体的格式为text,Content-length:19行表示主体的长度。HTTP报文
    HTTP的所有报文都可以分为两类,请求报文,响应报文,请求报文会向WEB服务器请求一个动作,响应报文会将请求的结果返回给客户端。请求报文和响应报文的基本报文结构相同。
    请求报文的格式:
     <method> <request-URL> <version> 
     <headers>
     
      <entity-body>
    
    响应报文的格式,只是起始行语法不同
    <version> <status> <reason-phrase>
    <headers>
        
    <entity-body>
    
    HTTP报文
    上面短语的注释,
    method,HTTP的请求方法往往是一个单独的GET,HEAD,POST…)。 request-URL,上一章有说过。version,HTTP的版本。
    status,返回的状态码(执行的结果,成功或者失败等)。
    reason-phrase,返回的原因短语。header 首部,可以有多个或者0个首部,没个首部都包含了一个名字,后面用“:”分割其值,有一个空行表示结束。
    entity-body,实体部分,可以是任何数据,也可以没有实体
    注意:一个HTTP首部应该总是由一个空行结束
  3. 方法
    所有的请求报文都是由一个起始行的,也叫做求情行,包含了一个方法和一个求情URL,用来告知服务器客户端要对那个资源执行什么方法,还由一个HTTP版本,HTTP并没有要求所有的起始行必须包含HTTP版本。
    响应行包含了报文使用的HTTP版本,返回的数字状态码,以及用来描述操作状态的文件形式短语
    请求的起始行以方法作为开始,方法用来告知服务器要做些说明,比如:"GET /test/aaa.gif HTTP/1.0"中,方法就是GET。
    HTTP规范总定义了一组常用的请求方法:
    方法			描述							是否包含主体
    GET			从服务器获取一份文档							否
    HEAD		中从服务器获取文档的首部						否
    POST		向服务器发送需要处理的数据					是
    PUT		将求情的主体不放呢存储到服务器上					是
    TRACE	对可能经过代理服务器传送到服务器的报文进行追踪  	否
    OPTIONS	决定可以在服务器上执行那些方法						否
    DELETE	从服务器上删除一份文档							否
    
    不是所有服务器都实现了上面的所有方法,HTTP设计得易于扩展,所以有些服务器可能实现了一些其他的方法
    状态码是用来告诉客户端执行的结果或者发送了上面事情。比如 HTTP/1.0 200 OK 状态码就是200.
    状态码的分别一般为
    整体范围 以定义 分类
    100-199 100·101 信息提示
    200-299 200-206 表示成功
    300-399 300-305 重定向
    400-499 400-415 客户端错误
    500-599 500-505 服务器出错
    HTTP/1.0 200 OK 中OK为返回的短语,HTTP中对短语没有硬性要求。
    HTTP版本号是为了以便了解对方的能力个HTTP报文的格式,主要版本号的比较不能用小数形式来进行比较,应该是两个单独的数据进行比较,就是HTTP/2.22就比HTTP/2.3大,因为22比3大。
    HTTP起始行后面跟的就是HTTP首部了,HTTP首部是由一个或多个行组成的。HTTP规范定义了几种首部字段。应用程序也可以随意发明自己所用的首部。HTTP首部可以分为以下几类
    通用首部:既可以出现在求情报文中,也可以出现在响应报文中
    求情首部:提供更多有关请求的信息
    响应首部:提供更多有关响应的信息
    实体首部:描述实体的长度和内容或者资源自身的信息
    扩展首部:规范中没有定义的新首部
    每个HTTP首部都有一种简单的语法 “选项: 值” :后面的空格为可选的 最后以CRLF结尾在这里插入图片描述
    HTTP首部行可以分为多个行来提高可读性,多出来的行前面只是要由一个空格或制表符(tab)
    例如:
    HTTP/1.0 200 OK
    Content-Type: image/gif
    Content-Length" 8672
    Server: Test Server
    	Version 1.0
    	```
    	这个部分中Server中就是被分为多行表示的
    	HTTP的主体部分为HTTP的实体,就是HTTP要传输的内容,其中可以包含任意格式的内容
    	HTTP的方法会根据HTTP服务器对方法实现的不同而执行不同的操作,比如,DELETE方法,服务器的实现可能并不是删除,而是资源移动到某个位置。
    	HTTP定义了一组被称为安全方法的方法,这些方法都不会对服务器产生任何动作(有点像只读)。安全方法并不一定是什么动作都不执行的,是用安全方法的目的就是运行HTTP应用程序开发者通过告知用户这个操作可能引发某些不安全的方法。比如线上支付,很多浏览器都会对其进行提示。
    	GET:基本上所有服务器都实现了该方法,HTTP/1.1要求服务器实现了此方法。通常用于从服务器获取某个资源
    	HEAD:和GET方法很类似,但是HEAD方法只返回首部,该首部应该和GET方法获取的首部完全一样。
    	PUT:与GET方法想法,该方法是将用户数据发送到服务器上去,因此大多服务器允许用户将数据写入到服务器,但大多都需要用户输入密码登录。
    	POST:起初是用来向服务器输入数据的,实际上通常会用它来支持HTML的表单,用户将表单填好,然后发送给服务器。
    	TRACE:记录了从客户端到服务器的路径,中间转发的服务器。
    	OPTIONS:用来查询服务器支持的各种功能
    	DELETE:用来删除资源文件的,但是HTTP服务器不一定会执行,HTTP规范运行服务器在不通知客户端的情况下撤销求情。
    	扩展方法:HTTP允许用户自定义扩展方法,其中由一些通用的扩展方法,LOCK(允许用户锁定资源文件)MKCOL(允许用户创建支援)COPY(便于在服务器上负责资源)MOVE(在服务器上移动资源)
    	并不是所有方法都是规范的,最好对这些扩展方法宽容一些。
    
  4. 状态码
    HTTP的状态码被分为五大类
    100-199 信息性状态码 以定义的在这里插入图片描述
    200-199 成功状态码 以定义的
    在这里插入图片描述
    300-399 重定向状态码 以定义的
    在这里插入图片描述
    在这里插入图片描述
    400-499 客户端错误状态码 以定以的在这里插入图片描述
    在这里插入图片描述
    500-599 服务器错误状态码 以定义的
    在这里插入图片描述
    以上是状态码的表示
  5. 首部
    通用首部:表示客户端和服务器和其他应用程序之间提供的通用功能,比他Date首部就是一个通用首部,每一端都可以用它来说明构建报文的时间
    在这里插入图片描述
    在这里插入图片描述
    求情首部:请求报文特有的,它为服务器提供了一些额外的信息,比如客户端希望接受说明类型的数据
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
响应首部:响应报文特有的,以便为客户端提供信息
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
实体首部:实体首部指的是拥有应对实体主体部分的首部,就是文件的类型,长度
在这里插入图片描述
在这里插入图片描述
扩展首部:由应用程序开发者创建的,还未添加到已批准的HTTP规范中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值