Cookie、Session,以及在ASP.NET中的应用

昨天被问到了一些Cookie和Session的知识,回答了一部分,有一部分没有回答出来。今天上午特地查了一些资料,现在把找到的一些好的资料,总结出来,分享一下。

先来说一些cookie和session的基础知识。

cookie是保存在客户端的,保存少量信息,明文,经常用来保存用户id之类的信息,常见场景就是登录时候的“记住我”。不推荐保存敏感信息。

session是会话级的,保存在服务端,每个用户是唯一的,可以用来实现购物车之类的,需要在服务端保存当前用户会话的上下文信息的需求。可以保存在服务器的内存中,不能跨服务器;可以保存在数据库中。

上面是一些零星的知识点。其实还有很多,例如cookie中的sessionid,session还可以用状态服务器保存,这样可以用专用的服务器保存session。cookie中的内容是字符串类型的,session中的内容是object类型的,session中的内容获取之后需要类型转换,转换成所需要的类型。

在ASP.NET中,可以在web.config文件中进行配置。

 

 
 
  1. <configuration> 
  2.     <system.web> 
  3. <sessionState mode="InProc"  
  4.                     timeout="20"  
  5.                     cookieless="true"  
  6.                     stateConnectionString="tcpip=localhost:42424"  
  7.                      sqlConnectionString="" 
  8.                     /> 
  9.      
  10.     </system.web> 
  11.  
  12. </configuration> 

关于配置节中的参数信息,可以查看 ASP.NET Session 状态的存储 ,讲得比较详细,还有找到了细说Cookie 这样一篇文章,感觉讲得也比较详细。

 

 

 

问题有两个。

1 客户端禁用cookie之后,session还能用吗?

2 cookie是如何在客户端和服务端传递的,具体的传递过程。

 

回答。

1 客户端禁用cookie之后,session还能用吗?

禁用cookie之后,也可以使用session。

Session的状态存储在两个地方,分别是客户端和服务端。客户端保存SessionID,Session信息保存在服务端。客户端的SessionID是保存在Cookie中的,如果浏览器禁用cookie,那么就不能使用session的好处了。

其实sessionid还可以通过url传递,还可以通过form传递,可以自定义来实现的。

在ASP.NET中,session有两种存储方式:cookie和cookieless。也就是说禁用cookie也可以使用session。配置为cookieless=true之后,可以选择将session存储在状态服务中,或者存储在SQL Server中。具体的做法可以看一下最后的参考文献。

 

2 cookie是如何在客户端和服务端传递的,具体的传递过程。

cookie在客户端和服务器端的传递是通过请求和响应的头来传递的。

从客户端到服务器端传递cookie,是在request的header中有一个cookie,里面就是传递的内容。

从服务器端到客户端传递cookie,是在response的header中有一个set-cookie,里面就是通过后台代码设置的cookie的内容。

这可以通过很多的抓包工具来查看,例如fiddlerhttpwatchfirebug

参考文献

1. ASP.NET Session 状态的存储

2. 细说Cookie

3. 正确使用 cookie 的 path




本文转自 virusswb 51CTO博客,原文链接:http://blog.51cto.com/virusswb/998456,如需转载请自行联系原作者

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值