session和cookie的区别和联系
cookie:是保存在客户端浏览器上的,主要内容:cookie的内容主要包括:名字,值,过期时间,路径和域。
cookie如果没有设置过期时间,则cookie保存在内存中,这时关闭浏览器cookie消失,cookie中保存的session也不存在了;
如果设置了过期时间,则保存在硬盘上。设置cookie过期时间的方法如下:
Response.Cookies("MyCookie").Expires = DateAdd("h", 1, Now())#保留COOKIES一个小时
session:是保存在服务器端的内存中,也可以通过特殊方式持久化管理,为每一个客户端创建唯一额标志。
服务端先检查客户端请求是否包含一个sessionId,如果已经包含,说明以前已经为该客户端创建过session,服务器就把该session检索出来(检索不到可能会新建一个);
如果客户端不包含sessionId,则为该客户端创建一个session并生产一个唯一的sessionId,响应时返回给客户端保存到cookie中。
有时浏览器的cookie会被禁,所以一般会使用url重写的方式传递sessionId,如下:
http://...../xxx;jsessionid=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764
或
http://...../xxx?jsessionid=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764
一般情况,客户端cookie消失或者过期不会通知服务端,所以服务端的session也会设置失效时间。