zoukankan      html  css  js  c++  java
  • session和cookie区别&它们的用法

    (一)、区别
    1、cookie数据存放在客户的浏览器上,session数据放在服务器上。
    2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
    考虑到安全应当使用session。
    3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
    考虑到减轻服务器性能方面,应当使用COOKIE。
    4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

    cookie 和session 的联系:
    session是通过cookie来工作的
    session和cookie之间是通过$_COOKIE['PHPSESSID']来联系的,通过$_COOKIE['PHPSESSID']可以知道session的id,从而获取到其他的信息。
    在购物网站中通常将用户加入购物车的商品联通session_id记录到数据库中,当用户再次访问是,通过sessionid就可以查找到用户上次加入购物车的商品。因为sessionid是唯一的,记录到数据库中就可以根据这个查找了。
    (二)、区别

    1、cookie数据存放在客户的浏览器上,session数据放在服务器上.

           简单的说,当你登录一个网站的时候,如果web服务器端使用的是session,那么所有的数据都保存在服务器上面,

    客户端每次请求服务器的时候会发送 当前会话的session_id,服务器根据当前session_id判断相应的用户数据标志,以确定用户是否登录,或具有某种权限。

    由于数据是存储在服务器 上面,所以你不能伪造,但是如果你能够获取某个登录用户的session_id,用特殊的浏览器伪造该用户的请求也是能够成功的。

    session_id是服务 器和客户端链接时候随机分配的,一般来说是不会有重复,但如果有大量的并发请求,也不是没有重复的可能性,我曾经就遇到过一次。

    登录某个网站,开始显示的 是自己的信息,等一段时间超时了,一刷新,居然显示了别人的信息。


    Session是由应用服务器维持的一个服务器端的存储空间,用户在连接服务器时,会由服务器生成一个唯一的SessionID,用该SessionID 为标识符来存取服务器端的Session存储空间。而SessionID这一数据则是保存到客户端,用Cookie保存的,用户提交页面时,会将这一 SessionID提交到服务器端,来存取Session数据。这一过程,是不用开发人员干预的。所以一旦客户端禁用Cookie,那么Session也会失效。


    2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗考虑到安全应当使用session。


    3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能考虑到减轻服务器性能方面,应当使用COOKIE。


    4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。(Session对象没有对存储的数据量的限制,其中可以保存更为复杂的数据类型)

      注意:

          session很容易失效,用户体验很差;

          虽然cookie不安全,但是可以加密 ;

          cookie也分为永久 和暂时 存在的;

          浏览器 有禁止cookie功能 ,但一般用户都不会设置;

         一定要设置失效时间,要不然浏览器关闭就消失了;

          例如:

                记住密码功能就是使用永久cookie写在客户端电脑,下次登录时,自动将cookie信息附加发送给服务端。

                application是全局性信息,是所有用户共享的信息,如可以记录有多少用户现在登录过本网站,并把该信息展示个所有用户。

     两者最大的区别在于生存周期,一个是IE启动到IE关闭.(浏览器页面一关 ,session就消失了)


    一个是预先设置的生存周期,或永久的保存于本地的文件。(cookie)


    一、cookie可以设置值和获取值,删除等一些其他功能
    //设置cookie
      function set(name,value,iDay){
      if(iDay){
      var oDate=new Date();//初始化时间
      oDate.setDate(oDate.getDate()+iDay);//时间
      document.cookie=name+'='+value+';path=/;expires='+oDate;//用户写时间
      }else{
      document.cookie=name+'='+value+';path=/;'////如果用户没写时间则执行这个
      //时间可以不要,但路径(path)必须要填写,因为JS的默认路径是当前页,如果不填,此cookie只在当前页面生效!
      }
      }
     //获取cookie  
      function get(name){
      var arr=document.cookie.split("; ");
      for (var i=0;i<arr.length;i++) {
      var arr1=arr[i].split('=');
      if(arr1[0]==name){
      return arr1[1];
      }
      }
      return '';
     
    //删除cookie
      function remove(name){
      set(name,'aaaa',-1);
      }
      remove('jack');
      alert(get('jack'));
      // set('jack','1234',5); 

    二、session

        设置session

          java里面,可以给session添加自定义key,value(HttpServletRequest request 作为方法的输入参数)

          HttpSession session = request.getSession();
          session.setAttribute("usrid", userid);

        取得session

          jsp里面可以   这段来源自CSDN一个讨论贴,自己时间后并没有成功,报错是session is undifiened,后来又找了资料说 javascript不提供访问session的功                      能。session只能通过动态程序操作,可以使用ajax给javascript返回值。

          session.getAttribute("username");

          java里面可以 (HttpServletRequest request 作为方法的输入参数)

          HttpSession session = request.getSession(); 

          session.getAttribute("usrname");
  • 相关阅读:
    python 异常处理
    python 文件
    python 面向对象程序设计基础
    python 数据结构与算法
    python中的基本数据结构
    关于python程序设计流程(未完结)
    python的字典(dict)的键值对存储规则
    python中字符串的方法及注释
    Element.requestFullscreen()方法
    oncontextmenu 事件
  • 原文地址:https://www.cnblogs.com/liangxiaoli/p/7152329.html
Copyright © 2011-2022 走看看