无cookie会话的目的是使不支持或者未启用cookie的浏览器能够使用有状态的应用程序,但是无cookie并不是没有问题。首先,当会话开始时,不论用户发出的是否为应用程序页面的绝对url,无cookie都会引发重定向。
若使用无cookie,且在地址栏输入另一个应用程序的地址,那么在返回之前的页面时,获取的是相对的会话值。如果禁用cookie,会话数据则会丢失。由于回发会自动通过相对URL来实现,因而禁用cookie不会对此有影响,但如果使用绝对URL的连接,则会造成严重的问题,在这种情况下,总会创建新的会话。例如下面的代码就会中止当前会话:
<a runat="server" href="/test/session.aspx">click</a>
有什么办法能自动修正链接和超链接中的绝对url,使其融入会话信息?为此,我们可以使用HttpResponse类的ApplyAppPathModifier方法
<a href=‘<% = Response.ApplyAppPathModifier("test/page.aspx")%>‘>click</a>
使用无cookie会话还会带来安全问题,对于无cookie会话,会话ID会暴露在地址栏中,对外界可见。因此如果要将私人或敏感信息存储在会话中,那么使用安全套接层(SSL)或者安全传输层(TLS)对浏览器和服务器间包含会话ID的通信进行加密。
此外,还可以给用户提供注销功能,并调用Abandon方法。
时间: 2024-10-20 14:37:21