http 传输协议
+ 前后端交互的方式
+ 前端以什么样的形式发送数据给后端
+ 后端以什么样的形式返回数据给前端
传输协议
1. 必须经历四个步骤
1-1. 建立连接
1-2. 发送请求(前端给后端)
1-3. 返回响应(后端给前端)
1-4. 断开连接
2. 只能由前端发起
+ 不能由后端主动沟通前端
3. 一次只能说一个事情
+ 对于着一个事情你可以尽可能的描述的详细
+ 但是一次连接只能沟通一个事情
4. 前后端交互只能交互字符串
+ 所有其他数据类型都不可以
+ 中文会转成 url 编码
一个请求的四个步骤
1. 建立连接
+ 基于 TCP / IP 协议的三次握手
+ 浏览器和服务器做的
+ 目的: 为了保证通道的连接
1. 前端和后端说: "你在吗"
2. 后端和前端说: "我再"
-> 后端知道 前端正常发送
-> 后端知道 后端正常接收
3. 前端和后端说: "好的我知道了"
-> 前端知道 后端正常接收
-> 前端知道 前端正常发送
-> 前端知道 前端正常接收
-> 前端知道 后端正常发送
4. 后端和前端说: "你发送请求吧"
-> 后端知道 前端正常接收
-> 后端知道 后端正常发送
2. 发送请求
+ 前端发送请求给后端, 必须以 请求报文 的形式发送
+ 一个特殊格式的字符串文件(由浏览器进行组装)
+ 请求报文
=> 请求行
-> GET / POST: 请求方式(未完待续)
-> ./login.php: 请求地址
-> HTTP/1.1: 传输协议版本
=> 请求头
-> 对本次请求的描述信息
-> Host: 请求主机
-> Accapt: 期望的数据类型
-> UserAgent: 请求终端
-> Content-type: 请求体的数据格式
-> ...
-> Cookie: (未完待续)
=> 请求空行
-> 分隔请求体和请求头的
=> 请求体
-> 前端携带给后端的参数
-> 有的有, 有的没有
3. 接收响应
+ 每一个响应是由服务端接收到前端的请求以后, 给出的结果
+ 必须以响应报文的形式发送个前端
+ 响应报文
1. 状态行
=> 200: 响应状态码(未完待续)
=> ok: 对响应状态码的简单描述
=> HTTP/1.1 传输协议版本
2. 响应头
=> 对本次响应的描述信息
=> Date: 服务器时间(世界标准时间)
=> Server: 服务器信息
=> Content-Type: 响应体的数据格式
=> ...
3. 响应体
=> 后端给前端的数据
4. 断开连接
+ 基于 TCP / IP 协议的四次挥手
+ 为了保证断开连接
1. 前端给后端发一个消息: "响应体收到, 我要准备断开连接了"
2. 后端给前端发一个消息: "好的, 我知道你收到响应体了"
3. 后端在其给前端发一个消息: "我已经准备断开连接了, 当我再次收到你的消息的时候, 我就断了, 不会再次回覆"
4. 前端收到后端的第一个消息
5. 前端收到后端的第二个消息: "好的, 我断开了, 别回了"
响应状态码
响应状态码
+ 以一个数字表示本次请求的响应状态
=> 成功: 创建成功, 删除成功, ...
=> 失败: 客户端失败, 服务端失败, ...
+ 是 100 ~ 599, 分成五类
=> 100 ~ 199: 表示连接继续
=> 200 ~ 299: 表示各种意义上的成功
=> 300 ~ 399: 表示重定向
=> 400 ~ 499: 表示客户端错误
=> 500 ~ 599: 表示服务端错误
常见状态码
+ 101 表示连接继续
+ 200 通用成功
+ 302 临时重定向
=> 本次请求临时使用 服务器 来决定浏览器跳转的页面
+ 301 永久重定向
=> 终身只要访问这个地址, 就会给重新切换到新的地址
+ 304 缓存
=> 当你访问过一遍这个页面以后
=> 浏览器会自动缓存
=> 当你在其访问同一个地址的时候, 不会像服务器发送请求了, 而是从缓存里面获取
+ 403 访问权限不够
+ 404 访问地址不存在
+ 500 通用服务端错误
+ 501 维护或者过载