现在的位置: 首页 > 综合 > 正文

在Asp.Net中不使用基于Cookie的Session

2013年12月06日 ⁄ 综合 ⁄ 共 776字 ⁄ 字号 评论关闭

在传统的Asp中我们知道,如果客户端禁止使用Cookie会导致服务器端Session不可用,因为SessionID是保存在客户端的Cookie里面的。如果客户端禁止使用Cookie,那么SessionID将无处存储。但是在.net中我们可以使用不基于Cookie的Session,为什么不使用Cookie?因为Cookie由于一些安全性方面的问题,有一部分的客户会禁止使用它。那么我们在.net中如何才能使用不基于Cookie的Session呢?

只需要在web.config文件里进行配置一下就可以了

  1. <sessionState cookieless="true" > 

仅仅只需要这样配置就可以了。进行这样的配置,我们将会发现我们的访问的网址变成了http://yourserver/folder/(session ID here)/default.aspx这种形式。服务器端的SessionID写在了浏览器栏里了,这样做会有一定的安全隐患--会话劫持,也就是说别人可以复制这个SessionID,从而以你的身份/会话访问网站。并且,如果我们在页面上写网站内部的超链接的时候,如<a runat="server" href="~/test/page.aspx">Click</a>,这样写,我们跳转之后的页面是以新的会话打开的,我们可以这样写<a runat="server" href=<% =Response.ApplyAppPathModifier("/test/page.aspx")%> >Click</a> ,通过Response的ApplyAppPathModifier方法来加入一个会话ID字符串到超链接里,这个方法采用一个表示 URL 的字符串作为参数,并且返回一个嵌入了会话信息的绝对 URL。并且这个方法可以使用在http链接跳转到https链接的情况下。

抱歉!评论已关闭.