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也会设置失效时间。

posted @ 2018-08-06 14:40  乌瑟尔  阅读(207)  评论(0编辑  收藏  举报