session和cookie的区别

session的原理:

  http是无状态的协议,客户每次读取web页面时,服务器都打开新的会话,而且服务器也不会自动维护客户的上下文信息。session就是一种保存上下文信息的机制,她是针对每一个用户的,session的内容在服务器端,通过sessionId来区分不同的客户,session是以cookie或url重写为基础的,默认用cookie来实现,系统会创造一个JSESSIONID的输出cookie,我们成为session cookie,以区分persistent coookies,注意session cookie是存储于浏览器内存中的,并不是写到硬盘上的;我们通常是看不见JSESSIONID的,但是当我们禁用浏览器的cookie后,web服务器会采用url重写的方式传递sessionid,我们就可以在浏览器看到sessionid=HJHADKSFHKAJSHFJ之类的字符串;session cookie针对某一次会话而言,会话结束session cookie也就消失了 

session与cookie的区别:

  1 session保存在服务器,客户端不知道其中的信息;cookie保存在客户端,服务端可以知道其中的信息

  2 session中保存的是对象,cookie中保存的是字符串

  3 session不能区分路径,同一个用户在访问一个网站期间,所有的session在任何一个地方都可以访问到;而cookie中如果设置了路径参数,那么同一个网站中不同路径下的cookie互相是访问不道德

session与cookie的联系:

  session是需要借助cookie才能正常工作的,如果客户端完全禁止cookie,session将失效

session和cookie的应用:

如何利用实现自动登录
  当用户在某个网站注册后,就会收到一个惟一用户ID的cookie。客户后来重新连接时,这个用户ID会自动返回,服务器对它进行检查,确定它是否为注册用户且选择了自动登录,从而使用户无需给出明确的用户名和密码,就可以访问服务器上的资源

会话跟踪:

  通常session cookie是不能跨窗口使用的,当你新开了一个浏览器窗口进入相同页面时,系统会赋予你一个新的sessionid,这样我们信息共享的目的就达不到了,此时我们可以先把sessionid保存在persistent cookie中,然后在新窗口中读出来,就可以得到上一个窗口SessionID了,这样通过session cookie和persistent cookie的结合我们就实现了跨窗口的session tracking

原文地址:https://www.cnblogs.com/roxy/p/7805858.html