cookie存在于浏览器端,是客户端保存用户信息的一种机制,用来记录用户的一些信息。是经过扩展HTTP协议来实现的,服务器经过在HTTP的响应头加上一行特殊的指示(set-cookie
)以提示浏览器按照指示生成对应的cookie。主要用于如下三个方面。html
cookie的原理:html5
cookie的存活时间程序员
cookie的内容包括:名字、值、过时时间、路径和域。路径和域一块儿构成cookie的做用范围。若是不设置过时时间,则表示该cookie的生命周期为浏览器会话期间,关闭浏览器窗口,cookie就消失,通常保存在内存中(会话cookie
),若是设置了过时时间,该cookie则会被保存到硬盘里(硬盘cookie
)。数据库
客户端的存储,基于html5,本地存储。能够将数据在当前会话中保存下来。刷新页面数据依然存在,可是关闭页面后,sessionStorage中的数据就会被清空。跨域
是HTML5标准中新添加的技术。本地存储,存储在本地硬盘。除非手动清除,不然永久保存。浏览器
session存在于服务器端,依赖于cookie(cookie能够被认为的禁止,因此有其余机制能够在cookie被禁用时,仍然可以把sessionId传递到服务器
)。是服务端保存的一个数据结构,用来跟踪用户的状态。能够保存在内存、数据库和文件中。
服务器
session的原理:cookie
关闭浏览器会话也不会结束
)并根据sessionId在session池中寻找有没有该session,没有则将之添加到session池。(有一个默认存放时间,被取出时会从新设置默认存放时间
)。cookie被禁用时的处理网络
type="hidden"
),服务器会自动修改表单,添加一个隐藏字段,以便在表单提交时可以把sessionId传递回服务器。session会话结束的两种状况:session
session依赖cookie
)。 cookie中只能保存ASCII字符串,若是须要存取Unicode字符或者二进制数据,须要先进行转码。
session可以存取任何类型的数据,包括但不限于String、Integer、List、Map等。
cookie存储在客户端中,对客户是可见的,客户端的一些程序可能会窥探、复制以致修正cookie中的内容。
session存储在服务器上,对客户是透明的,不存在敏感信息泄露的风险。
cookie能够设置过时时间来保存用户信息在客户端保存的期限。
session依赖cookie,一旦cookie被清除,session就会失效。或者当客户端关闭会话,session超时失效致使会话结束。
cookie保管在客户端,不占用服务器资源。
session是保管在服务器端的,每一个用户都会产生一个session。加入并发的用户很是多,会产生大量的session,消耗大量的内存。
cookie是须要客户端支持的。假如客户端禁用了cookie或者不支持cookie,则会话跟踪会失效。
假如客户端浏览器不支持cookie,则须要运用session及URL地址重写或者采用表单隐藏域。
假如客户端支持cookie,则cookie能够设置为在本浏览器窗口以及子窗口内有效,也可以设为一切阅读器窗口内有效。可是session只能在本阅读器窗口及其子窗口内有效。假如两个浏览器窗口互不相干,它们将运用不一样的session。
cookie支持跨域名访问。session不支持跨域名访问。仅在它所在的域名内有效。
单个cookie保存的数据不能超过4k,session就没有这个限制。