- 首页 > it技术 > >
Javascript——传输协议
- 了解HTTP协议
- http 传输协议是前后端交互的一种方式,表示前端以怎样的形式发送数据给后端,后端以怎样的形式返回数据给前端
- 传输协议中必须经历 建立连接 --> 前端发送请求给后端 --> 后端返回响应给前端 --> 断开连接
- 只能由前端主动发起,后端不能主动沟通前端
- 一次连接只能沟通一件事,所以对一件事尽可能详细描述
- 前后端进行交互时只能使用字符串格式,不能使用其他格式的数据类型,中文会自动转换为 url 编码
- 传输协议传输过程
- 建立连接(基于TCP/IP协议的三次握手)
建立连接的目的是保证浏览器与服务器之间进行通道的连接
过程: 前端询问后端状态,后端回应前端,前端回应后端的回应,前端与后端确认正常连接,前端发送请求给后端
- 前端发送请求(以请求报文形式进行发送)
请求报文是一个特殊格式的字符串文件(由浏览器进行组装)
请求行的参数说明:
- 请求方式
HTTP 1.0 的请求方式:
- GET 偏向于获取的方式(大部分都是给后端一些参数,用来获取一系列数据)
- POST 偏向于给服务器一些数据(大部分都是登录,给服务器一些信息,然后返回一个简单的结果)
- PUT 偏向于给服务器一些信息,添加数据(大部分用于注册,给服务器发送一些信息进行存储)
- HEAD 用于获取服务器头信息
HTTP 1.1 的请求方式:
- DELDTE 偏向于删除信息(大部分时删除评论等)
- CONNECT 管道连接改变代理连接使用
- PATCH 偏向于给服务器一些信息进行修改信息(大部分用于完善用户资料)
- OPTIONS 获取服务器性能,但是需要服务器同意
- ./login.php 表示请求地址
- HTTP/1.1 表示传输协议版本
请求头(对本次请求的描述信息)
- Host 表示请求的主机
- Accapt 表示需要的数据类型
- User Agent 表示请求的终端
- Cookie
- Content-type 表示请求体的数据格式
请求空行(分隔请求体和请求头)
请求体(前端携带给后端的参数;GET请求没有)
- 后端接收请求并返回响应(以响应报文形式发送)
- 状态行:
- 响应状态码
- 100 ~ 199 表示连接继续
101 状态码表示连接继续
- 200 ~ 299 表示各种意义上的成功
200 状态码表示通用成功
- 300 ~ 399 表示重定向
301 状态码表示永久重定向(本次请求永久访问这个地址,重新切换为新的地址)
302 状态码表示临时重定向(本次请求临时使用 服务器 来决定浏览器跳转页面)
- 400 ~ 499 表示客户端错误
403 状态码表示访问权限不够
404 状态码表示访问地址不存在
- 500 ~ 599 表示服务端错误
500 状态码表示通用服务端错误
501 状态码表示服务器维护或过载
- 对响应状态码的简单描述
- 传输协议的版本
- 响应行:
- 对本次响应的描述信息
- Date 表示服务器时间(世界标准时间)
- Server 表示服务器信息
- Content-Type 表示响应体的数据格式
- ···
- 响应体(后端给前端的数据)
- 断开连接(基于TCP/IP 协议的四次挥手)
保证浏览器与服务器之间通道的断开
过程:前端收到响应报文,向后端发送断开报文,后端接收到断开报文并发送断开报文,前端接收到后端的断开报文并发送断开信息,后端无回应,断开来连接
- GET 和 POST 请求方式的区别
- GET 语义上是获取信息,GET携带参数的方式时 queryString,信息在地址栏后面直接拼接,不在请求体中,GET 理论上携带数据无限,但是浏览器地址栏有限,IE为2KB,GET 会被浏览器主动缓存,GET 明文发送
- POST 语义上是提交信息,POST 携带参数是 requestBody,信息在地址栏没有,而是在请求体中,POST 理论上携带数据无限,但是会被服务器端限制,POST 请求不会被浏览器主动缓存,POST 暗文发送,POST的数据格式需要与请求头内的 content-type 内的格式相匹配
- 了解Cookie(客户端的本地存储空间,用于存储一些数据)
特点:
- Cookie 按照域名进行存储(只能访问当前域名)
- Cookie 按照文件路径存储(子级可以访问父级路径内容,父级不能访问子级内容)
- Cookie 储存时按照字符串的形式进行存储
('key=value')
- Cookie 的存储空间为 4KB 或 50条数据
- Cookie 时效性,默认为会话级别失效,关闭浏览器后就没有了,可进行手动进行设置
- Cookie 前后端均可操作
- 请求时自动携带数据
- 操作cookie语法
【Javascript——传输协议】使用JS进行操作
// 获取数据
let cook = document.cookie
// 设置或修改数据
document.cookie = 'key = value;
expires=' + new Date() + ';
path=/'
/*
key = value 设置值
expires=' + new Date() + ' 对Cookie设置时效性性
path=/ 设置存储路径
存储的数据会自动转换为字符串格式,一般只存储一些简单的数据
*/
// 删除一条数据
document.cookie = 'key = value;
expires=-1'
使用PHP进行操作
// 获取数据(PHP自带一个关联型数组)
$cook = $_COOKIE;
$cook = $_COOKIE['key'];
//访问一个指定数据// 设置或修改
setcookie(key,value,expires,path);
- 了解session(服务器端的一个存储空间)
特点:开启session时,会自动生成一个“密码”,这个“密码”一半会自动存储到 cookie中,当数据返回给前端时会自动把这个“密码”带回去,并且cookie中存在一个 session_id
- 设置session的语法
// 设置session对应的cookie的时效性
session_set_cookie_params(时效时长,session_name(),session_id());
// 参数一:单位为秒,设置多长时间过期
// 参数二:设置 session 的key
// 参数三 session 的value
// 设置时效性的方法必须写在 session_start() 之前// 开启session空间
session_start();
// 设置session
$_SESSION['key']= value;
推荐阅读