会话(Session和cookie)

来源:互联网 发布:面向接口编程实例 编辑:程序博客网 时间:2024/05/17 06:18

SESSION 变量和COOKIE 的区别:

用来保存某一用户的数据,SESSION保存在服务端,COOKIE保存在客户端。

禁用了cookie,SESSION就也不能用了!原因如下。

======================================================================

SessionID和ASPSESSIONID cookie(asp):

 Session其实是利用Cookie进行信息处理的,当用户首先进行了请求后,服务端就在用户浏览器上创建了一个Cookie,当这个Session结束时,其实就是意味着这个Cookie就过期了。

为这个用户创建的Cookie的名称是ASPSESSIONID。这个Cookie(ASPSESSIONID cookie)的唯一目的就是为每一个用户提供不同的身份认证,即通过ASPSESSIONID cookie来识别区分每个会话(Session)。

为了保密,可以通过某种加密算法把客户端ASPSESSIONID cookie与服务端SessionID一一对应起来。

所以禁用cookie,就没法区分每次会话,session也就不能用了。

(来自《迈至科asp技术手册》)

======================================================================

关于 SessionID 和 Cookie

当用户第一次请求给定的应用程序中的 .asp 文件时,ASP 生成一个 SessionID。SessionID 是由一个复杂算法生成的号码,它唯一标识每个用户会话。在新会话开始时,服务器将 Session ID 作为一个 cookie 存储在用户的 Web 浏览器中。

SessionID 与钥匙很相似,当会话期间用户与应用程序交互时,ASP 可以将用户信息存储在服务器的一个“保险箱”中。正象用钥匙能存取保险箱中物品一样,通过在 HTTP 请求标题中发送的用户 SessionID cookie,就能够对该“保险箱”中的内容进行访问。每当 ASP 收到一个页请求时,就检查 HTTP 请求标题,以获得 SessionID cookie。

在将 SessionID cookie 存储于用户的浏览器之后,即使用户请求了另一个 .asp 文件,或请求了运行在另一个应用程序中的 .asp 文件ASP 仍会重用该 cookie 跟踪会话。与此相似,如果用户故意放弃会话或让会话超时,然后再请求另一个 .asp 文件,那么 ASP 将以同一个 cookie 开始新的会话只有当服务器管理员重新启动服务器或用户重新启动 Web 浏览器时,此时存储在内存中的 SessionID 设置将被清除,用户将会获得新的 SessionID cookie。

通过重用 SessionID cookie,ASP 将发送给用户浏览器的 cookie 数量降为最低。另外,如果您决定您的 ASP 应用程序不需要会话管理,就可以不让 ASP 跟踪会话和向用户发送 SessionID 。

ASP 在以下情况下不发送会话的 cookie:

  • 应用程序的会话状态被禁用。
  • ASP 页被定义为无会话,即该页包含 <%@ EnableSessionState=False %> 标记。

详细请参照asp帮助文档。

======================================================================

Session对象(笔者:应该是Session会话对应的cookie)在各浏览器中的有效范围

IE中:
有效的窗品包括
1.Session对象(应该是cookie)只在建立Session对象的窗口中有效。
2.在建立Session对象(应该是cookie)的窗口中新开链接的窗口

无效的窗口包括
1.直接启动IE浏览器的窗口
2.不是在建立Session对象(应该是cookie)的窗口中新开链接的窗口

NetScape中:
只要一个窗口有了某个Session对象(应该是cookie),则全部窗口对此Session(应该是cookie)都有效
(出处:
http://www.vipcn.com

所以:一个web站点的一个Session会话对应一个SessionID,一个SessionID对应一个浏览器Session  cookie,一个浏览器Session  cookie可以对应多个web站点中的Session会话(但每个web站点只有一个会话与之对应)。

原创粉丝点击