文章目录
参考博客:
HTTP总结
HTTP概念
特性
- HTTP协议用于客户端和服务端之间的通信
- 通过请求和响应的交互达成通信 : HTTP协议规定,请求从客户端发出,最后服务器端响应请求并返回,也就是说,肯定是从客户端开始建立通信的,服务器端在没有接受到请求之前不会发送响应。
- HTTP 是不保存状态的协议 : HTTP协议不对请求和响应之间的通信状态进行保存,也就是说该协议对发送过的请求和响应都不做持久化处理。但是在一些购物类网站(或者其他类型网站)需要保存一些登录状态或者其他状态信息。为了实现期望的保持状态的功能,引入了Cookie技术。有了Cookie后再使用HTTP协议通信,就可以管理状态了。
- HTTP使用请求URI来定位资源
HTTP方法
方法名 | 目的 | 解释 |
---|---|---|
GET | 获取资源 | 用于请求访问已经被URI(统一资源标识符)识别的资源,可以通过URL传参给服务器 |
POST | 传输实体主体 | 用于传输信息给服务器,主要功能与GET方法类似,但一般推荐使用POST方式 |
PUT | 传输文件 | 传输文件,报文主体中包含文件内容,保存到对应URI位置 |
HEAD | 获取报文首部 | 获得报文首部,与GET方法类似,只是不返回报文主体,一般用于验证URI是否有效 |
DELETE | 删除文件 | 删除文件,与PUT方法相反,删除对应URI位置的文件 |
OPTIONS | 查询支持的方法 | 查询相应URI支持的HTTP方法 |
TRACE | 追踪路径 | 让服务器将之前的请求通信环回给客户端的方法(不常用,或者基本不会使用,容易引发攻击) |
CONNECT | 要求用隧道协议连接代理 | 要求代理服务器通信时建立隧道,实现用隧道协议进行TCP通信。主要使用SSL和TLS协议把通信内容加密后通过网络隧道传输 |
HTTP持久连接
HTTP的初始版本中,每进行一次HTTP请求都会断开一次TCP连接。(当时数据量少)
HTTP持久连接(HTTP keep-alive)。特点是,只要没有任意端提出断开连接,则保持TCP连接。(当前数量大,减少通信开销)
持久连接的好处:
- 减少了TCP连接的重复建立和断开造成的额外开销
- 降低了服务器的负载
- 提高页面显示的速度
在HTTP/1.1 中,所有的连接默认都是持久连接
持久连接也是的管线化形式进行请求成为可能。管线化形式出现,不需要等待响应就可以直接发送下一个请求,这样能够做到并行发送多个请求,这样也再次加快了页面的显示速度。
使用Cookie进行状态管理
HTTP协议是无状态协议,不会去保存请求和响应的状态。
无状态协议的优点是:减少服务器的资源消耗、降低协议的复杂性,所以现在的HTTP才被应用到各种场景里面。
但是确实我们又需要解决无状态造成的问题,于是引入了Cookie技术。Cookie技术通过在请求和响应报文中写入Cookie信息来控制客户端的状态。Cookie会从服务器端发送的响应报文里内的Set-Cookie的首部字段信息,通知客户端保存Cookie。下次发送请求的时候,客户端会自动在请求报文里面加入Cookie值后发送出去。服务器端发现客户端发送过来的Cookie后,检查是哪个客户端的请求,对比服务器上的记录,得到之前的状态信息。
HTTP报文
简介
HTTP通信过程包括从客户端发往服务器端的请求以及服务器端返回客户端的响应。
HTTP报文是由多行数据构成的字符串文本。
HTTP报文可以分为报文首部和报文主体两块两者由最初出现的空行来划分。其中报文主体不是一定要有的。