cookies和session

1,简单说说Cookie是什么吧,为什么需要Cookie

Cookie 是一小段文本信息,伴随着用户请求在 Web 服务器和浏览器之间传递。Cookie 包含每次用户访问站点时 Web 应用程序都可以读取的信息。

2,为什么需要Cookie? 因为HTTP协议是无状态的,对于一个浏览器发出的多次请求,WEB服务器无法区分 是不是来源于同一个浏览器。所以,需要额外的数据用于维护会话。 Cookie 正是这样的一段随HTTP请求一起被传递的额外数据。

1,session 是一个抽象概念,开发者为了实现中断和继续等操作,将 user agent 和 server 之间一对一的交互,抽象为“会话”,进而衍生出“会话状态”,也就是 session 的概念。

2,而 cookie 是一个实际存在的东西,http 协议中定义在 header 中的字段。可以认为是 session 的一种后端无状态实现。

3,cookie保存在客户端,session保存在服务器端,Session是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中;
Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。

4,第一次创建Session的时候,服务端会在HTTP协议中告诉客户端,需要在 Cookie 里面记录一个Session ID,以后每次请求把这个会话ID发送到服务器,

链接:https://www.nowcoder.com/questionTerminal/20d99243797f41db8c9d8674248e69ff
来源:牛客网

优点: 极高的扩展性和可用性

1) 数据持久性

2) 不需要任何服务器资源。 Cookie 存储在客户端并在发送后由服务器读取。

3) 可配置到期规则。 控制 cookie 的生命期,使之不会永远有效。偷盗者很可能拿到一个过期的 cookie 。

4) 简单性。 基于文本的轻量结构。

5) 通过良好的编程,控制保存在 cookie 中的 session 对象的大小。

6) 通过加密和安全传输技术( SSL ),减少 cookie 被破解的可能性。

7) 只在 cookie 中存放不敏感数据,即使被盗也不会有重大损失。


缺点:

1) Cookie 数量和长度的限制

数量:每个域的 cookie 总数有限。

a) IE6 或更低版本最多 20 个 cookie

b) IE7 和之后的版本最后可以有 50 个 cookie

c) Firefox 最多 50 个 cookie

d) chrome 和 Safari 没有做硬性限制

长度:每个 cookie 长度不超过 4KB ( 4096B ),否则会被截掉。

2) 潜在的安全风险 。 Cookie 可能被拦截、篡改。如果 cookie 被拦截,就有可能取得所有的 session 信息。

3) 用户配置为禁用 。有些用户禁用了浏览器或客户端设备接受 cookie 的能力,因此限制了这一功能。

4) 有些状态不可能保存在客户端 。例如,为了防止重复提交表单,我们需要在服务器端保存一个计数器。如果我们把这个计数器保存在客户端,那么它起不到任何作用。

猜你喜欢

转载自www.cnblogs.com/vhyc/p/9449530.html