简介:HTTP(Hyper Text Transfer Protocol)是超文本传输协议,是用于从远程服务器传输超文本到本地浏览器的协议。她是基于请求与响应、无状态的、应用层的协议,基于TCP/IP协议传输数据。
1. HTTP协议无状态和管线化
无状态:协议对事务处理没有记忆能力,当客户端向服务器发送请求,服务器响应完毕后,两者断开连接,也不保存连接状态。
针对无状态的解决策略:HTTP/1.1持久连接,特点是只要任意一端没有明确提出断开连接,则保持TCP连接状态,请求头中添加Connection: keep-alive即可。在HTTP/1.1版本中,默认都是持久连接
管线化:能够同时并发多个请求,不需要一个接一个等待响应了,且响应是按顺序返回的。
2. HTTP报文
A. 请求报文:请求行、请求头、空行和请求体组成
请求行:请求方法、请求URL、HTTP协议及版本
请求方法:GET——获取资源、POST——向指定资源提交数据进行处理、PUT——更新资源、DELETE——删除资源;
GET和POST区别:GET在浏览器回退时是无害的,而POST会再次提交请求;
GET请求会被浏览器主动缓存,而POST不会,除非手动设置;
GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留;
GET请求在URL中传送的参数是有长度限制的,而POST没有限;
GET参数通过URL传递,POST放在Request body中
请求URL:协议://主机:端口/路径
请求头:关键字:值对组成,可以自定义
B. 响应报文:状态行、响应头、空行和响应体组成
状态行:协议版本、状态码及状态码描述
状态码:1xx:指示信息——表示请求已接收,继续处理(websocket)
2xx:成功——表示请求已被成功接收、理解、接受
3xx:重定向——要完成请求必须进行更进一步的操作;
4xx:客户端错误——请求有语法错误或请求无法匹配上;
5xx:服务器端错误——服务器未能实现合法的请求。