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");
原文地址:https://www.cnblogs.com/liangxiaoli/p/7152329.html