浅谈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