win10cookie存放的位置
搞不懂Session、Cookie、Token有何关系和区别?
搞不懂Session、Cookie、Token有何关系和区别?
前段时间刚刚大致了解了三者的区别。为了便于理解,我们可以从传统的认证演化过程到令牌来理解会话、Cookie和令牌之间的关系。
很久以前,Web应用程序基本上用于浏览文档,例如,网络黄页。因为它 的浏览,服务器没有。;不需要记录特定用户在什么时间浏览了哪些文档。每个请求都是一个新的HTTP协议,对服务器来说是全新的,但此时不是。Session, Cookie, token.
基于会话的身份验证随着交互式Web应用程序的开发,如购物和其他需要用户登录的网站。就导致了一个问题,就是网站需要记录哪些用户登录了系统,进行了哪些操作,也就是要有一个管理会话(什么是会话?简单来说,如果如果用户需要登录,可以简单理解为会话。如果它不 不需要登录,这是一个简单的连接。),比如不同的用户在购物车里添加不同的商品,这就意味着必须区分每个用户。但是因为HTTP请求是无状态的,所以我想到了。一种解决方案是给每个用户发送一个会话id,就是简单地给每个用户发送一个随机的字符串,这个字符串既不重复,也不容易找到一个有规律的模式来伪造,这样每个用户都会收到一个不同的会话ID。所以每次用户从当客户端向服务器发送HTTP请求时,把这个字符串一起发送,服务器就能分辨出谁是谁。那么客户端(浏览器)如何保存这个 "身份 "?通常,默认情况下采用Cookie(存储在浏览器目录中的文本)。文件),该会话id将存储在客户端的Cookie中。
上述方法虽然解决了区分用户的问题,但也引入了一个新的问题,即每个用户(客户端)只需要保存自己的会话id,而服务器需要保存所有用户的会话id。当越来越多的用户访问服务器时,服务器需要存储几千甚至几千万,这对服务器来说是一笔不可接受的开支。让 让我们再举一个简单的例子。如果服务器是由两台服务器组成的集群,小明通过服务器A登录系统,那么会话id将被保存在服务器a上。;的下一个请求被转发给服务器B?服务器b没有。;我没有小明。;的会话id。
有人可能会说,小明登录了就一直登录服务器A(粘性会话),won 这个问题不能解决吗?服务器A挂了怎么办?小明 的请求仍然会被转发到服务器B,问题仍然存在。
这样就只能在集群之间复制和共享会话,也就是在两台机器之间复制会话id,如下图,但是这对服务器的性能和内存提出了巨大的挑战。
因此,我认为如果所有用户 会话被集中存储,我还想到了缓存服务Memcached——因为Memcached是一个分布式内存对象缓存系统,可以用来实现会话同步。塞西On id存储在一个服务器上,所有的服务器都来访问这个地方的数据,这样就避免了复制的,但是这个 "数以千计的收藏 "使得再次出现单点故障成为可能,也就是说,该服务器负责存储会话。服务器挂机,所有用户都要重新登录,用户无法接受。
然后简单的把存储Session的服务器设计成集群,增加可靠性,避免单点故障,但是无论如何,Session带来的问题似乎层出不穷。
于是有人开始想,为什么服务器一定要保存会话,而只是让每个客户端保存呢?但是,如果服务器不保存这些会话ID,它将如何验证客户端发送的会话ID确实是服务器?生成的呢?没有认证,服务器可以 t判断是否是合法登录的用户。是的,这里的问题是认证。会话只是解决这个认证问题的一个方案。还有其他解决方法吗?——于是,引入了基于Token的体。验证。
基于令牌的认证,比如张三登录了系统,服务器发给他一个令牌,令牌中包含张三 的用户id。张三再次通过Http请求访问服务器时,会放这个令牌。通过Http头带就行了。
服务器只需要验证令牌是自己生成的,而不是伪造的。如果任何人都可以在没有验证的情况下伪造它,那么这个令牌和会话id就没有本质的区别。别人怎么可能不伪造?然后对数据做个手势。比如服务器使用HMAC-SHA256加密算法,加上一个只有服务器知道的密钥,对数据进行签名,并将这个签名和数据作为令牌发送给客户端,客户端收到令牌后可以保存。例如,将其存储在Cookie(存储在浏览器目录中的文本文件)中。因为除了服务器之外,任何其他用户都不知道这个密钥,所以伪造令牌是不可能的。
这样,服务器就不能保存令牌了。当张三将该令牌发送给服务器时,服务器使用相同的HMAC-SHA256算法和密钥再次计算数据的签名,并将其与令牌中的签名进行比较。如果两者相同,说明张三已经登录,也就是验证成功。如果不一样,那么这个请求就是伪造的。
这样服务器只需要生成令牌,不需要保存令牌,只需要验证令牌,实现了以时间换空间(CPU计算时间换会话存储空间)。没有会话id的限制,当用户数量 访问量增加,直接加机器很容易横向扩展,也大大提高了可扩展性。
win10如何始终允许cookie?
1.按[Win R]组合键打开操作,在操作框中输入inetcpl.cpl,点击确定;
2.选择 "隐私与隐私按钮并单击[设置];
3.从阻止级别的下拉菜单中选择[中:阻止大多数自动弹出窗口],然后选择 "关闭 "
4.切换到隐私选项卡,然后单击设置下的高级按钮。
5.进行设置,然后单击确定-确定保存设置。