浅谈sessoin和cookie

废话不多直接上图

浅谈sessoin和cookie

session原理:

http是无状态的协议,客户每次读取web页面时,服务器都打开新的会话,而且服务器也不会自动维护客户的context信息。         session就是一种保存context信息的机制,她是针对每一个用户的。

session的内容保存在服务器端通过sessionId来区分不同的客户

session是以cookie或url重写为基础的,默认用cookie来实现,系统会创造一个JSESSIONID的输出cookie,我们成为session cookie,以区分persistent coookies,注意session cookie是存储于浏览器内存中的,并不是写到硬盘上的;

       我们通常是看不见JSESSIONID的,但是当我们禁用浏览器的cookie后,web服务器会采用url重写的方式传递sessionid,我们就可以在浏览器看到sessionid=balabala...之类的字符串;session cookie针对某一次会话而言,会话结束session cookie也就消失了.

 

cookie机制:

正统的cookie分发是通过扩展HTTP协议来实现的,服务器在HTTP的响应头中,加上一行特殊指示,提示浏览器按照指示生成相应的cookie。

cookie的内容主要包括:名字、值、过期时间、路径和域(路径+域=作用范围)

       1,会话cookie(session cookie):不设置过期时间;生命周期 == 浏览器的生命周期;关闭浏览器会话cookie死。

       2,持久化cookie(persistent coookies):设置过期时间;关闭浏览器再次打开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