什么是「无状态」?
就是没有上下文的连接状态。换句话说:浏览器向服务器发送请求,服务器并不知道这个浏览器是谁。
浏览器说:「你好,我是浏览器01号,我想要 index.html 页面」
服务器说:「你好01号,你有权限,给你 index.html 页面」
浏览器说:「你好,我是浏览器01号,我想要 about.html 页面」
服务器说:「你好01号,你有权限 ,给你 about.html 页面」
每次浏览器都会向服务器表明自己的身份,而服务器并不认识它,也不记录它是谁。就好比服务器有「失忆症」,见过之后就忘记了,再见面,你还要再做自我介绍。
这就是无状态。
大家在网上浏览信息的时候,浏览器是怎样记录并保持你的登录状态呢?
Cookie 来了。
Cookie 相当于服务器给浏览器的一个标识符,浏览器第一次访问服务器的时候,服务器就会返回一个属于你当前浏览器的标识符。下次你再发送或者请求数据的时候,会连带着 Cookie 一起发送回去,服务器一解析标识符,就知道你是谁,你从哪里来。
换句话说:Cookie 实现了「有状态」。不过,Cookie 是由浏览器负责存储的,只是在当前浏览器生效。如果换了浏览器,那就需要重新绑定 Cookie。
几个属性:
1、传递 Cookie 使用了两个字段:响应头字段 Set-Cookie 和 请求头字段 Cookie。
2、Cookie 可以设置有效期,使用 Expires 和 Max-Age 两个属性。
3、Cookie 还可以设置作用域,可以使浏览器只发送给特定的服务器,通过 Domain 和 Path 指定 Cookie 所属的域名和路径,发送请求之前浏览器会去提取并对比。
负载均衡是基于 HTTP 的「无状态」处理的,浏览器发送一个数据给服务器,由于没有状态的区别,所以可以让「负载均衡」把请求转发到任意一台服务器。
微信小程序是没有「Cookie」的,所以需要在做项目的时候手动存一下 Cookie 。
内容参考于:极客时间《透视 HTTP 协议》
原创文章,作者:小道研究,如若转载,请注明出处:https://www.sudun.com/ask/34632.html