HTTP协议的状态管理
由于HTTP协议是一款基于短连接模式的协议,
一次请求响应之后连接将会断开,所以基于HTTP
协议的请求是无状态的请求: 即服务端无法把
同一客户端发送的多次请求当成一个整体来看待。
我们有些情况下需要管理HTTP协议请求的状态,
把同一个客户端发送的多次请求当成一个整体。
管理HTTP协议请求状态的方式有2种:
Cookie机制: 把数据保存到了客户端
Session机制: 把数据保存到了服务器
Cookie机制的执行原理:
1>客户端发送HTTP请求,服务端接收请求后,
在响应数据包中携带Cookie信息(在响应
数据包中添加Set-Cookie消息头)传递给
客户端,让客户端保存这些cookie数据:
Set-Cookie:cishu=10
2>客户端接收响应数据包,解析Cookie信息,
保存cookie数据,下次发送请求时,在请求
数据包中携带cookie一同发送请求:
Cookie:cishu=10
3>服务端接收请求数据包,获取cookie数据:
cishu=10,然后就可以执行后续操作。
完成HTTP的状态管理。
Cookie的限制:
1>Cookie不能存储中文
2>Cookie不能存储太多的数据
3>Cookie不安全
Session机制的执行原理
1>客户端发送http请求,服务端把涉及到的数据
存入session对象,并且分配一个唯一的JSESSIONID
以Cookie的形式返回给客户端:
Set-Cookie: JSESSIONID=ABC986AB98C6A8A9B
2>客户端接收并解析JSESSIONID,保存在客户端
3>当发送后续请求时,把JSESSIONID带着一起
发送出去(以Cookie的形式):
Cookie: JSESSIONID=ABC986AB98C6A8A9B
4>服务端接收JSESSIONID,根据JSESSIONID找到
以前存储过的数据,完成HTTP的状态管理。
由于HTTP协议是一款基于短连接模式的协议,
一次请求响应之后连接将会断开,所以基于HTTP
协议的请求是无状态的请求: 即服务端无法把
同一客户端发送的多次请求当成一个整体来看待。
我们有些情况下需要管理HTTP协议请求的状态,
把同一个客户端发送的多次请求当成一个整体。
管理HTTP协议请求状态的方式有2种:
Cookie机制: 把数据保存到了客户端
Session机制: 把数据保存到了服务器
Cookie机制的执行原理:
1>客户端发送HTTP请求,服务端接收请求后,
在响应数据包中携带Cookie信息(在响应
数据包中添加Set-Cookie消息头)传递给
客户端,让客户端保存这些cookie数据:
Set-Cookie:cishu=10
2>客户端接收响应数据包,解析Cookie信息,
保存cookie数据,下次发送请求时,在请求
数据包中携带cookie一同发送请求:
Cookie:cishu=10
3>服务端接收请求数据包,获取cookie数据:
cishu=10,然后就可以执行后续操作。
完成HTTP的状态管理。
Cookie的限制:
1>Cookie不能存储中文
2>Cookie不能存储太多的数据
3>Cookie不安全
Session机制的执行原理
1>客户端发送http请求,服务端把涉及到的数据
存入session对象,并且分配一个唯一的JSESSIONID
以Cookie的形式返回给客户端:
Set-Cookie: JSESSIONID=ABC986AB98C6A8A9B
2>客户端接收并解析JSESSIONID,保存在客户端
3>当发送后续请求时,把JSESSIONID带着一起
发送出去(以Cookie的形式):
Cookie: JSESSIONID=ABC986AB98C6A8A9B
4>服务端接收JSESSIONID,根据JSESSIONID找到
以前存储过的数据,完成HTTP的状态管理。