HTTP协议
概念
Hyper Text Transfer Protocol 超文本传输协议,是互联网上应用最为广泛的一种网络协议,是一个基于请求与响应模式的,无状态的,应用层的协议,运行于TCP协议基础之上.
* 传输协议:定义了客户端和服务器端通信时,发送数据时的格式
特点
- 支持客户端(浏览器) / 服务器,模式
- 简单快速: 客户端只向服务器发送请求方法和路径,服务器即可响应数据,因而通信数据很快.请求方法常用的有GET,POST等.
- 灵活: HTTP允许传输任意类型的数据,传输的数据类型由Content-Type标识.
- 无连接: 每次TCP连接只处理一个或多个请求,服务器处理完客户端的请求后,即断开连接.采用这种方式可以节省传输时间
- HTTP 1.0版本是一个请求响应之后,直接断开连接,称为短连接
- HTTP 1.1版本不是响应之后之间断开,而是等几秒钟,这几秒钟内有新的请求,那么还是通过之前的连接通道来收发消息,如果过了几秒钟之后没有发送新的请求,就会断开连接,称为长连接.
- 无状态: HTTP协议是无状态协议.
- 无状态是指协议对于事务处理没有记忆能力
HTTP协议通信流程
- 客户和服务器建立连接(三次握手)
- 客户向服务器发送请求
- 服务器接收请求,并根据请求返回相应的文件作为应答
- 客户与服务器关闭连接(四次挥手)
HTTP原理
请求消息数据格式
当浏览器向Web服务器发出请求时,它向服务器传送一个数据块,也就是请求信息(请求报文),HTTP请求信息由4个部分组成:
1.请求行
格式: 请求方式 请求url 请求协议/版本
- 请求方式
- GET : 1. 请求参数在请求行中,在url后 ; 2. 请求的url长度有限制 ; 3. 不太安全
- POST : 1. 请求参数在请求体中 ; 2. 请求的url长度没有限制 ; 3. 相对安全
2.请求头(客户端浏览器告诉服务器一些信息)
格式: 请求头名称 : 请求头值
* 常见的请求头:
- User-Agent:
- 浏览器告诉服务器,我访问你使用的浏览器版本信息 ;
- 可以在服务器端获取该头的信息,解决浏览器的兼容性问题
- Referer : 告诉服务器,我(当前请求)从哪里来
- 作用:
- 防盗链
- .统计工作
- 作用:
3.请求空行(用于分割POST请求的请求头和请求体)
4.请求体(封装POST请求信息的请求参数)
响应消息数据结构(服务器端发送给客户端的数据)
1. 响应行
格式: 协议/版本 响应状态码 状态码描述
1.2 响应状态码: 服务器告诉客户端浏览器本次请求与响应的状态
HTTP状态码 (来源于百度百科): https://baike.baidu.com/item/HTTP%E7%8A%B6%E6%80%81%E7%A0%81/5053660?fr=aladdin
2. 响应头
格式: 头名称 : 值
常见响应头 :
- Content - Type: 服务器告诉客户端本次响应体数据格式以及编码格式
- Content - disposition: 服务器告诉客户端以什么格式打开响应体数据