计算机网络面试题(十五):HTTP无状态协议是什么?怎么解决的?
HTTP无状态协议
无状态协议(Stateless Protocol)是指浏览器对于事物的处理没有记忆功能
例如:通过账户密码登录进了一个网站,当再次进入时则需要重新输入账户密码……
HTTP就是一种无状态协议,它对用户的操作没有记忆功能。为了解决这种情况,引出了Cookie&Session机制,让浏览器具备了记忆功能
Cookie&Session机制
- 当服务器第一次收到请求时,会主动开辟一块session空间(即创建了session对象),同时生成一个sessionid
- 服务器在给浏览器回复响应时,会在响应头添加
set-cookie: JSESSIONID=XXXXX
,将sessionid回复给浏览器 - 客户端收到响应后,在本地设置一个对应
JSESSIONID=XXXXX
的cookie信息
cookie(饼干)是有过期时间的,过期时间就是浏览器会话结束——关闭网站
在此之后,客户端每次再向同一个网站发送请求时,请求头部都会带上cookie信息(包含了sessionid)
服务端在收到请求后,读取cookie信息,获取sessionid,在session空间中找到对应的信息进行比对
浏览器获得了记忆功能
JWT机制
JWT(JSON Web Token)
token:令牌
JWT的功能也是让浏览器具有了记忆功能
JWT是保存在客户端的,广泛应用于单点登录
JWT特点:
- JWT的cookie信息是保存在客户端的
JWT直接进行本地校验即可,验证完毕后,这个token就会在session中随请求一起发送给服务端。这样节省了服务端资源,并且token可以进行多次验证
- JWT可以实现跨域认证
cookies只能用于单个节点的域/子域。如果需要通过第三个节点访问,就会被禁止。JWT可以通过多个节点进行用户认证