Cookie
为什么会出现Cookie
众所周知,http协议是无状态的,无服务无法单从网络连接上来识别用户身份,这样就会有一个问题,我们登录一个网站每次刷新网页都要重新登录一下,这样的体验无疑是很差的,试想:我们在双十一抢货的时候,每次刷新一个就会重新登录一次,那可能页面刷新出来再登录上货已经卖完了
为了弥补http请求无状态的不足,出现了cookie,可以把cookie理解为一个通行证,用户浏览器访问服务器之后服务器向浏览器颁发一个通行证,之后浏览器携带着这个通行证访问服务器,服务器就能识别出来用户。
Session
如果说Cookie是通行证用来确认用户身份的话,那么Session就相当于一个“用户明细表”,Session保存在服务器上,设置Cookie并把SessionID保存到Cookie中发给浏览器,浏览器再次访问时只需要从该Session中查找该客户的状态就可以了,而且SessionID是一串无规律的字符串,被黑客拿到也不会有很大的风险,同时服务器在发送Cookie之前会对含有SessionID的Cookie进行签名,如果黑客修改了SessionID那么服务器将无法识别SessionID
Token
当我们发出一个HTTP请求到服务器A获取一个Cookie + SessionID,再次进行请求时,这是负载均衡将请求转发到服务器B上,服务器B上并没有对应的Session这时就无法验证用户状态,为了解决这种情况我们可以使用Token
服务器对数据做一个签名,将数据和签名做成一个token发送给发送给客户端,服务端并不保存token将token发送给客户端进行保存,客户端带着token进行请求,服务端只需要得到相应的token然后进行解密即可,
|