HTTP协议特点:
简单快速 客户向服务器请求服务时,只需传请求方法和路径。uri
灵活 客户可以请求任何数据类型数据,在content-type中设置
无连接 限制每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,即断开连接,可以节省传输时间
无状态 HTTP协议对事务不具有存储功能,每一次请求不会记录上一次的请求状态。服务器用session方式。
HTTP状态码:
1xx 指示消息 -表示请求已接收
2xx 成功
3xx 重定向
4xx 客户端错误
5xx 服务器错误
200 客户端请求成功
206 客户发送一个带有rang头的GET请求 如请求视频
301 永久重定向到新的
302 临时重定向
304 客户端有缓存,
400 请求语法出错
403 请求资源禁止访问,只能通过服务器去访问
404 请求资源不出存在
HTTP方法:
GET 获取资源
POST 传输资源
PUT 更新资源
DELETE 删除资源
HEAD 请求报文首部
GET和POST的区别
GET在浏览器回退时是无害的,而POST会再次提交请求
GET请求的参数长度有限制2kB POST没有限制
GET请求参数通过URL上 POST在request body里面
GET请求会会被浏览器主动缓存,POST需要手动设置
GET请求参数会被完整保留在浏览器历史记录里,而POST的参数不会被保留(csri攻击)
HTTP报文:
请求报文:
请求行 HTTP方法 请求URI 协议 版本
请求头 keyValue值 请求数据类型
空行 告诉服务器请求头结束
请求体 请求内容
响应报文:
响应行 协议 版本 状态码
响应头
空行
响应体 根据请求头返回相应请求体类型
HTTP协议持久连接
HTTP协议采用请求-应答 模式,当使用普通模式,即非 Keep-Alive模式时,每个请求/应答客户端和服务器都要新建一个连接,完成之后立即断开连接。 无连接
当使用Keep-Alive模式时,采用持久连接,该功能使客户端到服务器的连接持续有效,当出现对服务器的后续请求时,Keep-Alive功能避免了建立或者重新建立连接。
HTTP1.1才支持持久连接
HTTP管线化 这个管线化我知道原里,知道怎么用。我这块没有认真研究过。
管线化,通过 请求一个响应一个,才继续下一个请求
请求统一打包,响应统一返回,仅HTTP/1.1
特点:
通过持久连接完成,仅HTTP/1.1支持此技术
只有GET/HEAD支持,POST有所限制
初次创建连接时不要启动管线机制,有可能服务端不支持HTTP1.1