cookie和session的区别

Cookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。

    Cookie是由服务器端生成,发送给User-Agent(一般是浏览器),浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时就发送该Cookie给服务器(前提是浏览器设置为启用cookie)。Cookie名称和值可以由服务器端开发自己定义,对于JSP而言也可以直接写入jsessionid,这样服务器可以知道该用户是否合法用户以及是否需要重新登录等,服务器可以设置或读取Cookies中包含信息,借此维护用户跟服务器会话中的状态。

    Cookie可以保持登录信息到用户下次与服务器的会话,换句话说,下次访问同一网站时,用户会发现不必输入用户名和密码就已经登录了(当然,不排除用户手工删除Cookie)。而还有一些Cookie在用户退出会话的时候就被删除了,这样可以有效保护个人隐私。
    Cookie在生成时就会被指定一个Expire值,这就是Cookie的生存周期,在这个周期内Cookie有效,超出周期Cookie就会被清除。有些页面将Cookie的生存周期设置为“0”或负值,这样在关闭浏览器时,就马上清除Cookie,不会记录用户信息,更加安全。

    jQuery的cookie插件名为Cookie。

$.cookie("the_cookie","the_value");写入cookie
$.cookie("the_cookie");读取cookie
$.cookie("the_cookie",null);删除cookie
其他可选参数:expire:有效期 path:cookie的路径 domain:cookie的域名 secure:true此cookie的传输要求一个安全协议。

$.cookie(’name’, ‘value’, {expires: 7, path: ‘/’, domain: ‘jquery.com’, secure: true});

Session,在计算机中,尤其是在网络应用中,称为“会话”。

具体到Web中的Session指的就是用户在浏览某个网站时,从进入网站到关闭这个网站所经过的这段时间,也就是用户浏览这个网站所花费的时间。因此从上述的定义中我们可以看到,Session实际上是一个特定的时间概念。

Session 的作用就是它在 Web服务器上保持用户的状态信息供在任何时间从任何页访问。访问 Web应用程序的每个用户都生成一个单独的 Session 对象。每个 Session 对象的持续时间是用户访问的时间加上不活动的时间。

区别与联系

session保存在服务器,cookie保存在客户端。

session在用户会话结束后就会关闭了,但cookie因为保存在客户端,可以长期保存。

每个session有一个唯一的session ID,在启动session的同时,会在客户端生成cookie,服务器把session ID加到cookie中,服务器用以标识与其相连接的客户端。

每次服务器和客户端交互的时候,就是从cookie中取得session ID 来定位服务器上的session。二者可共同维系客户端与服务器的连接。

超时重新登录:服务器端通过session控制客户端不活动时间,来自动注销客户端的登录。

用户名密码自动填充:通过cookie对输入过得用户名或密码进行保存,实现自动填充。

在Servlet规范中,用于会话跟踪的Cookie名字必须是JSESSIONID。

保存Session ID的Cookie在浏览器关闭后就删除了,不能在多个浏览器进程中共享。共享只能发生在统一浏览器进程的不同浏览器窗口之间。

用于保存其他信息的Cookie可以在多个浏览器进程中共享,浏览器关闭后再次打开依然存在。 

原文地址:https://www.cnblogs.com/moleme/p/4375061.html