1.HTTP协议的主要特点
灵活,简便,无连接,无状态
具体理解参考https://blog.csdn.net/tennysonsky/article/details/44562435
2.HTTP报文的组成部分
首先http报文由请求报文和响应报文组成
请求报文:请求行(请求方法,请求url和http协议版本),请求头(各种key值),空行(标识请求头结束),请求体(一般是post到服务器一些信息)
响应报文:响应行(状态码和协议版本),响应头,空行,响应体(服务端返回的资源)
3.HTTP方法:
常用的有GET,POST和HEAD
4.POST与GET的区别
(1)get在浏览器中回退是无害的,而post请求会重复提交请求
(2)get请求在浏览器中会被主动缓存,而post不可以
(3)get请求的请求参数可以被完整的保留在浏览器的历史记录中,而post不会
(4)get请求的参数会因为浏览器地址栏导致有长度限制,而post不会
(5)get请求的参数通过url传递,而post通过Request body
5.HTTP状态码
HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。HTTP状态码共分为5种类型:
分类 | 分类描述 |
---|---|
1** | 信息,服务器收到请求,需要请求者继续执行操作 |
2** | 成功,操作被成功接收并处理 |
3** | 重定向,需要进一步的操作以完成请求 |
4** | 客户端错误,请求包含语法错误或无法完成请求 |
5** | 服务器错误,服务器在处理请求的过程中发生了错误 |
具体常见的状态码:
200:客户端请求成功
206:客户端发了一个带有range头的get请求。服务器完成了ta(意思是客户端发了一个带有范围字节的请求,服务端就截取资源的那个范围的字节返回给客户端,一般常见于客户端请求的视频,音乐的字节数过大)
301(moved permanently):即永久重定向,所请求的页面已经转至新的url
302(Found):即临时重定向,所请求的页面已经临时转移至新的url上
304:客户端有缓冲的文档并发出一个条件性的请求,服务器告诉客户端,原来缓冲的文档还可以继续使用
400:客户端请求有语法错误,不能被服务器所理解
401:请求未经授权
403:请求的页面禁止访问
404:访问的页面资源不存在
500:服务器发生不可预期的错误但是原来缓存的文档还可以继续使用
503:请求未完成,服务器可以临时发生当机,一段时间后恢复
6.持久链接
即keep-alive字段设置
http协议一般采用临时应答模式,即每个请求和应答,客户端和服务器都要重新建立一个连接,当请求和应答完成后服务器会断开连接
当使用keep-alive连接时,即客户端和服务端会持久连接,客户端可以向服务端持续发送请求
7.管线化
(1)在采用持久连接的情况下,一般连接的消息传递为:req1=>res1=>req2=>res2=>req3=>res3
管线化:req1=>req2=>req3=>res1=>res2=>res3
(2)管线化连接的注意事项:
1.管线化机制需要持久连接的支持,且http1.1协议才支持该技术
2.初次连接的时候不要启动管线化机制,服务端不一定支持
3.只有get和head请求支持管线化,而post有一定限制
8.http协议头部的一些重要key值
https://blog.csdn.net/selinda001/article/details/79338766