以下是w3c学院中两则ASP中应用session和cookie的文章:
ASP Session 对象
http://www.w3school.com.cn/asp/asp_sessions.asp
ASP Cookie
http://www.w3school.com.cn/asp/asp_cookies.asp
http是无状态协议,这就需要有一种机制,来维护客户的上下文信息,而session和cookie就是在客户与服务器间维护客户上下文信息的机制。session是一个典型应用就是站点登录页利用session存储用户登录信息,而站点的其它页通过这个session来分享登录信息如判断是否登录获取登录名等。cookie的典型应是就是w3c的那个记录客户是第几次登录的asp代码示例。
了解session和cookie机制的最好方法是通过http协议分析工具捕获特定页面的交互数据
Session:session是一种由服务端保存上下文信息的机制
当通过浏览器访问站点的一个页面时,服务端建立一个session,生成一个与此session对应的唯一session id,并通过http响应报文头的set cookie段返回session id 或者也称为会话cookie
login.asp代码示例
浏览器记住这个session id,将它保存在内存中,并在下一次对该站点页面的请求(可能是站内的另一个页面)时在http请求报文头的cookie中放入这个session id,这样就建立了一个客户端到服务器的唯一会话机制。这里需要注意的是,前面讲的下一次对该站点的页面请求是指在不关闭浏览器的情况。
ListData.asp代码示例
如果重新打开一个浏览器并访问ListData.asp,显然只能得到null的userid
在页面代码中可以显示的删除session以结束一个session
Logout.asp代码示例
此时如果再访问ListData.asp浏览器可能仍然在http报文头中带上原sessionid,也就是说仍然会得到正确的userid,这时需要刷新一下页面。
如果是直接关闭浏览器,服务端的session并不会马上被删除,而是有一个生存期,也会就是说如果在session生存期内,即使浏览器已关闭,利用原seesion id仍然能够重新使用这个session。
Cookie:cookie是一种在客户端保存上下文信息的机制
如果站点页面中有建立cookie的代码,则服务端会在该页面的http响应报文头的set Cookie段(可以有多个)中将存入该cookie的相关内容,浏览器取得这个cookie,并在自已的cookie存放目录中以文件形式保存。并在下一次对该站点页面的请求(可能是站内的另一个页面)时在http请求报文头的cookie中放入这个cookie的内容。这里需要注意的是,与session id不同,这里的下一次可以是关闭浏览器之后,只要在该cookie的生存期内。
Welcome.asp代码示例
需要注意的是,cookie是与浏览器或者说应用程序相关的,浏览器间并不共cookie文件,以上页面用IE访问几次以后,再用Firefox打开,显示是第一次访问,也就是说IE和Firefox各自维护cookie文件。
Session与Cookie的主要区别:
1、session在服务端保存,cookie在客户端保存
2、session id在客户端是保存在内存中的,且同一浏览器的两个实例间并不共享session id。cookie是保存在磁盘上的,同一浏览器的多个实例间共享cookie
3、...
参考资料:
关于session与cookie区别
http://blog.csdn.net/yytt123622/archive/2009/04/20/4094990.aspx
cookie 和session 的区别详解
http://www.cnblogs.com/shiyangxt/archive/2008/10/07/1305506.html
session和cookie的最深刻理解