ASP.NET中session和cookie详解
Cookie译小甜饼,是网页浏览器用来保存用户信息的文件,也就是一小段文本,可以保存比如用户是谁,购物车有哪些商品等。
Session会话,会话是指我们访问网站的一个周期。 比如用户打开一个浏览器访问某个位的站点。
首先Cookie简单了解一下:
- Cookie是一种能够让网站服务器把少量数据(4kb左右)储存到客户端的硬盘或内存,并且读取出来的一种技术。
- 当你浏览某网站时,由Web服务器放置于你硬盘上的一个非常小的文本文件,它可以记录你的用户ID、浏览过的网页或者停留的时间等网站想要你保存的信息。当你再次通过浏览器访问该网站时,浏览器会自动将属于该网站的Cookie发送到服务器去,服务器通过读取Cookie,得知你的相关信息,就可以做出相应的动作。如在页面显示欢迎你的标语,或者让你不用输入ID、密码就直接登录等等。
- 浏览器访问一个站点时,只将属于当前站点的Cookie发过到服务器。(根据域名)—(没必要把每家医院的病历本都带过去。)
- Cookie不兼容浏览器!
- 最好是将要保存的内容在服务器端加密(安全),
- 在硬盘中存放的位置与使用的操作系统和浏览器密切相关。
- 浏览器保存Cookie有两种方式:
- 浏览器的内存中;
- 浏览器所在的电脑的硬盘中。为将要写入到浏览器的Cookie对象设置失效时间:cook.Expires = DateTime.Now.AddMinutes(5);//设置cook5分钟后失效开发场景:常用于登录和保存用户最近浏览商品 从浏览器发来的Cookie的Expires属性值是无效的.(浏览器在向服务器发送Cookie的时候,没有将Cookie的失效时间发送过去)
Session简介:
- 当会话过期或终止时,服务器就会清除 Session 对象
- Session提供了一种把信息保存在服务器内存中的一种方式。它能存储任何数据类型包括自定义对象。
- 每个客户端的Session是独立存储。
- Session 对象用于存储有关用户的信息。
- 在整个用户会话过程中都会保留此信息。(保存SessionId的cookie丢失之前)
- 当用户在应用程序中从一个网页浏览到另一个网页时,存储在 Session 对象中的变量不会被丢弃。
- Session只可由该会话的用户访问(因为SessionId的东东以cookie的方式保存访问者浏览器的缓存里了)
- 用户不能访问或修改他人的Session
Session基础流程
Session的操作
开始并为Session赋值:Session[“uName”]=“CNYaoMing”;
取值:string strName = Session[“uName”].ToString();
销毁(取消/退出):Session.Abandon();//销毁服务器端的Session对象Session.Clear();//清空服务端的Session对象里的键值对,Session对象并没有从Session池里销毁
cookie和session的区别:
1、cookie数据存放在客户的浏览器上,session数据放在服务器上。
2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗 考虑到安全应当使用session。
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能 考虑到减轻服务器性能方面,应当使用cookie。
4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
5、所以个人建议: 将登陆信息等重要信息存放为SESSION 其他信息如果需要保留,可以放在COOKIE中
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下