Cookie(储存在用户本地终端上的数据)
Cookie 是在 HTTP 协议下,服务器或脚本可以维护客户工作站上信息的一种方式。Cookie 是由 Web 服务器保存在用户浏览器(客户端)上的小文本文件,它可以包含有关用户的信息。无论何时用户链接到服务器,Web 站点都可以访问 Cookie 信息
目前有些 Cookie 是临时的,有些则是持续的。临时的 Cookie 只在浏览器上保存一段规定的时间,一旦超过规定的时间,该 Cookie 就会被系统清除。
持续的 Cookie 则保存在用户的 Cookie 文件中,下一次用户返回时,仍然可以对它进行调用。在 Cookie 文件中保存 Cookie,有些用户担心 Cookie 中的用户信息被一些别有用心的人窃取,而造成一定的损害。其实,网站以外的用户无法跨过网站来获得 Cookie 信息。如果因为这种担心而屏蔽 Cookie,肯定会因此拒绝访问许多站点页面。因为,当今有许多 Web 站点开发人员使用 Cookie 技术,Session 对象的使用就离不开 Cookie 的支持
Cookie举例:
用户登陆,当登陆过一次后,客户端本地会存一个Cookie键值对,在下一次访问服务器时,不需要提供用户信息,可以直接查看,当然Cookie失效,Cookie则会消失,再次访问服务器则需要重新登陆,Cookie还是有缺点的,Cookie的一些信息是可以通过抓包、浏览器等方查看到,如果含有敏感信息,将会很不安全,这时就需要Session了。
Session(存储在服务端的数据)
在计算机中,尤其是在网络应用中,称为“会话控制”。Session 对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象。当会话过期或被放弃后,服务器将终止该会话。Session 对象最常见的一个用法就是存储用户的首选项。会话状态仅在支持 cookie 的浏览器中保留。
Session的原理
当服务器设置了需要Session校验后,第一次访问服务器时生成一个唯一,随机的标识,这个唯一标识作为一个key存在服务端的数据库、缓存、文件中,value则为客户端传来的一些用户信息等。同时唯一标识通过Cookie存在客户端本地,所以Session和Cookie需要结合使用。当下一次访问时,客户端携带存在Cookie中的Sessionid访问服务器,服务器去数据库、缓存、文件中对比Sessionid,存在则直接通过。同时Cookie和Session都可以设置超时时间。