HTTP传输协议
1、什么是 http 传输协议
http(超文本传输协议)是一个简单的请求-响应协议,运行在TCP之上,指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。
一个http请求的步骤,包括:建立连接通道、前端发送请求给后端、后端返回响应给前端、断开连接。(只能由前端发起)
建立连接:基于 TCP/IP 的三次握手,确保前后端通信的正常进行。(前端发送一个 SYN 包给后端,后端返回 SYN 包及一个 ACK 包给前端,最后前端再将 ACK+1 返回给后端)
前端发送请求:以报文的形式发送请求(请求报文)
后端响应:以报文形式返回响应(响应报文)
断开连接:基于 TCP/IP 的四次挥手,确保前后端断开连接。(前端发送一个 fin 给后端,后端返回 fin+2 和 ack 给前端,前端再将 ack+1 返回给后端,即彻底断开连接)
2、响应状态码
响应报文内的一个信息,表示本次请求的状态:成功、失败、缓存...
共分为5类:
- 100-199:表示连接继续,继续请求(很少见,基本见不到)
- 200-299:表示各种意义上的请求成功
- 300-399:表示重定向,本该请求的一个路径被服务端更换(原本想请求的路径被服务端自动处理更换了一个路径,常见状态码为 304:表示缓存,对已请求的页面,在缓存中加载,节约性能)
- 400-499:表示客户端错误,常见404:请求地址错误,403:权限不够,无法查看
- 500-599:表示服务端错误,常见502:服务器维护或过载
3、常见请求方式:
- GET 向服务器获取信息
- POST 向服务器发送信息
- PUT 向服务器发送并让服务器添加
- DELETE 让服务i器删除
- HEAD 仅用于获取响应头
- PACTH 类似与 PUT 只不过更倾向于更新局部数据
- CONNECT 预留方式,将管道连接更改为代理连接使用
- OPTIONS 用于允许前端查看服务端性能
4、GET AND POST 区别
- 语义化不同:GET倾向于从服务器获取数据,POST倾向于向服务器提交数据
- 传递参数的方式不同:GET请求直接在地址栏后面拼接参数,POST请求在请求体里面传递
- 参数大小限制不同:GET请求大小一般不超过2KB,POST理论上大小无限制(但会被服务器限制)
- 缓存能力:GET会被浏览器主动缓存,POST不会被浏览器主动缓存
- 安全性能:GET请求安全性能比较低(明文发送),POST请求相对安全性比较高(暗文发送)
- 数据格式:GET数据格式必须是 url 编码的格式,如果不是,会自动转换成 url 编码格式,POST数据格式理论上无要求,但是需和请求头内的 content-type 保持一致
注意:当需要传递与用户信息相关的信息时,必须使用 POST 发送
当制作登录页面发送信息时,必须使用 POST 发送
5、HTTP 与 HTTPS 区别
- http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
- http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
- http是免费的,大部分https需要收费