Session

是怎样工作的？

Session

其实是利用Cookie进行信息处理的，（参见后面有关Cookies的介绍），当用户首先进行了请求后，服务端就在用户浏览器上创建了一个Cookie，当这个Session结束时，其实就是意味着这个Cookie就过期了。

为这个用户创建的Cookie的名称是ASPSESSIONID。这个Cookie的唯一目的就是为每一个用户提供不同的身份认证。

注意

如果你对名字是ASPSESSIONID的COOKIE感到好奇，你可以利用ServerVariables集合的COOKIE Header来接受这个信息，参看下面这个脚本：

<%=Request.ServerVariables(

“HTTP COOKIE”) %>

你可以刷新不止一次而显示结果依然不变。如果希望对ServerVariables集合有更多了解，那么请去看第14章。

Session

变量自己不会存在用户浏览器上。不过，ASPSESSIONID这个cookie需要使用session变量。server使用ASPSESSIONID cookie来将特定的用户和特定的session信息联系起来。没有cookie的话，Server就不会了解到每一个特定用户在网站中移动的信息。

利用SessionID变量存储ASPSESSIONID cookie和直接对名为ASPSESSIONID的cookie赋值有很大不同。微软利用了一个复杂的数学算法对SessionID进行了加密措施，以防止黑客猜测出SessionID的值并且依据这个获得不该获得的身份或权限。

注意

你可以用两种方法屏蔽掉SessionID，一种是将全站进行屏蔽，另外一种是将一个单独Active Server Page进行相应屏蔽。

如果想要将整个站点的Session操作进行屏蔽，你可以使用Internet Service Manager。从Application设置对话框，点击Active Server Pages表并且取消对Enable Session State选项的选择。

你还可以在特定的Active Server Page的首行加入使之屏蔽的语句来进行这种操作。

<% EnableSessionState=False %>

由于

Session对象使用了Cookies，那么它的兼容性就受到了限制，一些老的浏览器显然是不行的，新的浏览器象是NetScape4.0也提供了屏蔽Cookie的选项。

这样就出了问题、由于Cookie不能适用于所有浏览器，那么在建站时你就必须注意了，如果你的网站定位于大众通用，就必须考虑各种不同的用户情况。不过现在确实有可以替代的方法，有些取代Cookies来进行身份认证的方法将在后面的章节中进行讨论。

注意

当前浏览器，是否发送一个Cookie在URL是区分大小写的,因此，微软提醒你最好使用同样的大小写方式，例如一起使用/WWW/mypage.asp和/www/mypage.asp肯定会使浏览器出错。