## HTTP协议:
1.请求消息:客户端给服务器端的数据
※数据格式
1.请求行
2.请求头
3.请求空行
4.请求体
2.服务器端发送给客户端的数据
※数据格式
1.响应行
1.组成:协议/版本 响应状态码 状态码描述行
2.状态码:服务器告诉客户端浏览器本次请求和响应的一个状态
1.状态码都是3位数字
2.分类:
1. 1xx:服务器接收客户端消息,但是没有接收完成,等待一段时间后发送1xx(1百多的状态码 )
2. 2xx:成功。代表:200(2开始的都代表成功)
3. 3xx:重定向代表:302(重定向)
(也是资源跳转的一种方式,跟之前学的转发很类似,比如说浏览器像资源A发出请求,A说干不了,但他知道C可以干,响应了去找C,状态码302,并且给他C的路径,相当于我浏览器敲了一次回车,请求了两个资源,也是资源跳转的一种方式,)304(访问缓存,比如有个a.png图片资源,然后有个浏览器来请求这个图片,请求完后,服务器就把啊的图片的数据发给浏览器,浏览器就展示了这么一张图片,但是由于这个图片不会经常发生变化,这张图片弄出来了,这张图片的数据就固定了,那么这个时候浏览器就会自定做一些操作,它会把图片的信息,图片的数据给缓存到浏览器的本地,在浏览器的本地就有a.png,缓存了之后,将来浏览器再来请求相同的图片的资源的时候,服务器发现你请求的这个资源,现在我在服务器没有发生变化,并且你本地有缓存,服务器就给浏览器说你本地有,找你本地那个去,不要在和我交互数据了,因为图片在发送数据的时候,发送的二进制他们要通信占用的时间比较长,所以呢服务器就给客户端说304,访问缓存吧,就提升整个请求和相应的速度)
4. 4xx:客户端错误 代表404:请求路径没有对应的资源
(比如 要访问的资源路径写错,本地的服务器根本么有)
405:请求方式没有有对应的doXxx方法
5. 5xx:服务器端错误。代表500(服务器内部出现异常)
(比如出现int i/0的异常,要去改代码)
2.响应头
1.格式:头名称:值
2.常见的响应头:
1.Content-Type:服务器告诉客户端本次的响应体数据格式以及编码格式
(浏览器会去识别响应回来的是html就用html解析器去解析,同时根据响应的编码进行调整)
2.Content-dispostion:服务器告诉客户端以什么格式打开我的响应体数据
※值:
※in-line默认值,在当前页面内打开
※attachment:filename=xxx以附件形式打开响应体。文件下载
3.响应空行
4.响应体:真实的传输数据
※响应的字符格式
HTTP/1.1 200 OK
Content-Length:100
Content-Type:text/html;charset=UTF-8
Date:Wed, 14 Aug 2019 13:24:16 GMT
响应体就是HTML的内容