深入浅出,解析cookie与session

一、session和cookie的特征


很多人认为,session是服务端的,cookie是客户端的。其实呢,session和cookie都是服务器产生的,都是键值对应的。
**  session是保存在服务器的,服务器会生成对应的session文件,cookie是返回给客户端的,然后客户端在存储相关文件。**
    session在服务器的入口是ID,然后服务器查出对应的的值,通过类似cookie的形式,返回给客户端(相当于买电影票)。客户端(浏览器),会在发送请求的时候,自动将本地存活的cookie封装在信息头中发送给服务器(相当于,看电影验票)。
    **session和cookie都是有生命周期的。**
    cookie的生命周期受到:cookie自身生命周期以及客户端是否保留cookie文件的影响(相当于,电影票没看确丢了)。
    session的生命周期受到:session自身的存活周期以及客户端是否关闭的影响。
    **session和cookie都是有作用域的。**

二、cookie和session的区别与使用


cookie:


  • 1、不同的浏览器存储cookie的位置不一样,也不能通用;
  • 2、cookie存储是以域名的形式进行区分的;
  • 3、cookie的数据可以设置名字;
  • 4、一个域名下存放cookie的个数是有限的,不同的浏览器存放的个数也是不同的;
  • 5、每个cookie存放的文件内容大小也是有限制的,不同浏览器存放的大小也是不同的;
    Jquery操作cookie:
    1.添加一个"会话cookie"
    $.cookie('the_cookie', 'the_value');
    这里没有指明 cookie有效时间,所创建的cookie有效期默认到用户关闭浏览器为止,所以被称为 “会话cookie(session cookie)”。
    2.创建一个cookie并设置有效时间为 7天
    $.cookie('the_cookie', 'the_value', { expires: 7 });
    这里指明了cookie有效时间,所创建的cookie被称为“持久 cookie (persistent cookie)”。注意单位是:天;
    3.创建一个cookie并设置 cookie的有效路径
    $.cookie('the_cookie', 'the_value', { expires: 7, path: '/' });
    在默认情况下,只有设置 cookie的网页才能读取该 cookie。如果想让一个页面读取另一个页面设置的cookie,必须设置cookie的路径。cookie的路径用于设置能够读取 cookie的顶级目录。将这个路径设置为网站的根目录,可以让所有网页都能互相读取 cookie (一般不要这样设置,防止出现冲突)。
    4.读取cookie
    $.cookie('the_cookie');
    5.删除cookie
    $.cookie('the_cookie', null);
    cookie是服务器返回给客户端,并保存在客户端的。因此存在暴利破解的可能性。

session


原理上,cookie与session,是相同的。同样的,我们用Jquery操作session。使用 jquery.session.js操作session:
使用之前需要引入,Jquery.js与 jquery.session.js哦,我们将使用sessionStorage对象,它类似与localStorage对象,只是sessionStorage是用来储存session数据的。当用户关闭浏览器这个数据会被清除掉。
1.添加数据
$.session.set('key', 'value')
2.删除数据
$.session.remove('key');
3.获取数据
$.session.get('key');
4.清除数据
$.session.clear();
session相对cookie更加安全一点,因为用户只是拿到了一个session ID来读取服务保存的配置文件,而读取的逻辑实现状态等是没有办法轻而易举破解,这种服务器的验证机制的。

笔者综述:当我们遇到一些全局变量,状态值之类的。在一次请求,或者路径跳转等的时候,可以一步步的存储获取。但是当我们,跨请求,跨路径在想获取这些参数的时候怎么办呢。自然而然就会想到:要是有一个配置文件就好了,我直接读取配置文件里面的内容,遇到新值我直接存储或者修改配置文件就好了。那么cookie和session就是了。只不过,cookie的配置文件在本地,session的配置文件在服务器,都是会被清除掉的临时文件。--HoYL

猜你喜欢

转载自blog.51cto.com/13479739/2152963