【ASP.NET】session与cookie的比较
2023-09-14 08:56:49 时间
在这次的考试维护中,温习了很多旧知识,也学习到了很多新知识。本篇博客想要和大家一起分享的是session和cookie的联系和区别。
【项目概要】 开发中,免不了会需要这样一种变量,在此阶段并没有它,但它出现在之前阶段或者其它方法中,我们就需要把它存储着,使得我们可以方便的获取它的值。在C/S开发下,我们可以定义全局变量;那么在B/S开发下,我们要用到的就是session或cookie了。 【项目背景】 在此次开发调查问卷系统中,有几个变量我们是随时需要的,比如:专业、课程、登录用户等。于是,洲就让我把它们都存放在session中,因为系统中已经有用过session存放用户登录信息了。专业、课程如此就可以解决随时随处获取值了。 【项目疑问】 之前,我一直都把专业和课程这样的额变量一直存放在session中,但等到系统快要完成的一个晚上,我脑海中出现了一个cookie的概念,我就想,我可不可以把这些变量放在cookie中呢?如果可以,放在cookie和放在session中,两者又有什么样的不同呢?于是,我便开始寻找问题的答案了。 【项目开发】 (1)先看一下我使用Session存储变量的代码:
/// param name="e" /param protected void lbnExportExcel_Click(object sender, EventArgs e) //专业信息 string departmentName = dropCollege.SelectedValue.ToString().Trim(); //课程信息 string courseName = dropCourse.SelectedValue.ToString().Trim(); //为空判断 if (departmentName == "" || courseName == "") return; ///实例化多选答案实体 CheckAnswerEntity checkanswerentity = new CheckAnswerEntity(); ///从Session中获取课程信息 checkanswerentity.CourseName = Session["courseName"].ToString().Trim(); ///从Session中获取专业信息 checkanswerentity.MajorName = Session["departmentName"].ToString().Trim(); } (2)下面是我利用Cookie存储课程和专业信息的代码:
/// param name="e" /param protected void lbnExportExcel_Click(object sender, EventArgs e) //专业信息 string departmentName = dropCollege.SelectedValue.ToString().Trim(); //课程信息 string courseName = dropCourse.SelectedValue.ToString().Trim(); //为空判断 if (departmentName == "" || courseName == "") return; //实例化单选答案实体 SingleAnswerEntity singleanswerentity = new SingleAnswerEntity(); //从Cookie集合中获取课程信息 singleanswerentity.CourseName = Request.Cookies["courseName"].Value; //从Cookie结合中获取专业信息 singleanswerentity.MajorName = Request.Cookies["majorName"].Value; } 【项目解疑】 事实证明,不论我用session还是cookie存放变量值,都是可以在其他地方获取到的。那么,session和cookie有区别吗?下面就一起学习学习啦。
由于Http协议是无状态的协议,所以服务端需要记录用户的状态时,就需要用某种机制来识具体的用户,这个机制就是session。
典型的场景比如购物车,当点击下单按钮时,由于Http协议无状态,所以并不知道是哪个用户操作的,所以服务端要为特定的用户创建了特定的session,用于标识和跟踪用户,这样才知道购物车中的信息。这个session是保存在服务端的。
然而,服务端如何识别特定的客户呢?这个时候cookie就登场了。每次HTTP请求的时候,刻画段都会发送响应的cookie信息到服务端。实际上大多数的应用都是用cookie来实现session跟踪的。
如果客户端的浏览器禁用了cookie怎么办呢?一般这种情况下,会使用一种叫URL重写的技术来进行会话跟踪,即每次Http交互,URL后面都会被附加上一个诸如sid=***这样的参数,服务端据此来识别用户。
平时,我们经在自己电脑上登录一些经常性的、固定性的网站,都会保存相应的账号和密码,下次就可以自动登录了。这个信息其实就是存放在cookie中了,给予用户很大的方便。这也是cookie名称的由来,给用户的一点甜头。
iiii)单个cookie保存的数据不能超过4k,很多浏览器都限制一个站点最多保存20个cookie。
所以,大多数情况下,是将登录等重要信息存放在session中,其它信息如果需要保存,可以放在cookie中。
【项目总结】 其实,在此之前,其它项目中也早已用到了session或者cookie存放数据,自己也看过很多博客,写的都是两者的比较。 然而,自己并没有亲身体会,去应用,去比较,所以,只是留下了印象。
也正是因为如此,在这个项目中,自己的多次用到,好像条件反射一般,很自然而然地就想到了将session换成cookie尝试一下,通过自己的实践,也解答了自己的疑惑,也更加理解了两者之间的联系和区别。
ASP.NET Core Web Api之JWT VS Session VS Cookie(二) ASP.NET Core Web Api之JWT VS Session VS Cookie(二)前言本文我们来探讨下JWT VS Session的问题,这个问题本没有过多的去思考,看到评论讨论太激烈,就花了一点时间去研究和总结,顺便说一句,这就是写博客的好处,一篇博客写出有的可能是经验积累,有的可能是学习分享,但都逃不过看到文章的你有更多或更好的想法,往返交流自身能收获更多,何乐而不为呢?希望本文能解惑或者能得到更多的交流。
ASP.NET WebApi 基于分布式Session方式实现Token签名认证(发布版) 一、课程介绍 明人不说暗话,跟着阿笨一起学玩WebApi!开发提供数据的WebApi服务,最重要的是数据的安全性。那么对于我们来说,如何确保数据的安全将会是需要思考的问题。在ASP.NETWebService服务中可以通过SoapHead验证机制来实现,那么在ASP.NET WebApi中我们应该如何保证我们的接口安全呢?如果您对本次分享课程《ASP.NET WebApi 基于分布式Session方式实现Token签名认证》感兴趣的话,那么请跟踪阿笨一起学习吧。
ASP.NET Core 2 学习笔记(十一)Cookies & Session 原文:ASP.NET Core 2 学习笔记(十一)Cookies & Session 基本上HTTP是没有记录状态的协定,但可以通过Cookies将Request来源区分出来,并将部分数据暂存于Cookies及Session,是写网站常用的用户数据暂存方式。
【项目概要】 开发中,免不了会需要这样一种变量,在此阶段并没有它,但它出现在之前阶段或者其它方法中,我们就需要把它存储着,使得我们可以方便的获取它的值。在C/S开发下,我们可以定义全局变量;那么在B/S开发下,我们要用到的就是session或cookie了。 【项目背景】 在此次开发调查问卷系统中,有几个变量我们是随时需要的,比如:专业、课程、登录用户等。于是,洲就让我把它们都存放在session中,因为系统中已经有用过session存放用户登录信息了。专业、课程如此就可以解决随时随处获取值了。 【项目疑问】 之前,我一直都把专业和课程这样的额变量一直存放在session中,但等到系统快要完成的一个晚上,我脑海中出现了一个cookie的概念,我就想,我可不可以把这些变量放在cookie中呢?如果可以,放在cookie和放在session中,两者又有什么样的不同呢?于是,我便开始寻找问题的答案了。 【项目开发】 (1)先看一下我使用Session存储变量的代码:
/// summary /// 当下拉框选择专业时,将选择的专业信息存放在Session中——胡志婷——2016年1月8日16:23:27 /// /summary /// param name="sender" /param /// param name="e" /param protected void dropCollege_SelectedIndexChanged(object sender, EventArgs e) //获取专业信息 string departmentName = dropCollege.SelectedValue.ToString().Trim(); //将专业名称存入Session中 Session["departmentName"] = departmentName; }当我在其它方法也需要用到这两个值时,直接从Session中获取即可:
/// param name="e" /param protected void lbnExportExcel_Click(object sender, EventArgs e) //专业信息 string departmentName = dropCollege.SelectedValue.ToString().Trim(); //课程信息 string courseName = dropCourse.SelectedValue.ToString().Trim(); //为空判断 if (departmentName == "" || courseName == "") return; ///实例化多选答案实体 CheckAnswerEntity checkanswerentity = new CheckAnswerEntity(); ///从Session中获取课程信息 checkanswerentity.CourseName = Session["courseName"].ToString().Trim(); ///从Session中获取专业信息 checkanswerentity.MajorName = Session["departmentName"].ToString().Trim(); } (2)下面是我利用Cookie存储课程和专业信息的代码:
/// summary /// 当下拉框选择专业时,将选择的专业信息存放在Session中——胡志婷——2016年1月8日16:28:04 /// /summary /// param name="sender" /param /// param name="e" /param protected void dropCollege_SelectedIndexChanged(object sender, EventArgs e) //获取专业信息 string majorName = dropCollege.SelectedValue.ToString().Trim(); //实例化一个Cookie对象,创建并命名新的cookie HttpCookie majorNameCookie = new HttpCookie("majorName"); //设置单个cookie的值 majorNameCookie.Value = majorName; //将指定的cookie保存到Cookies集合中 Response.Cookies.Add(majorNameCookie); }当我在其它方法也需要用到这两个值时,直接从Cookie中获取即可:
/// param name="e" /param protected void lbnExportExcel_Click(object sender, EventArgs e) //专业信息 string departmentName = dropCollege.SelectedValue.ToString().Trim(); //课程信息 string courseName = dropCourse.SelectedValue.ToString().Trim(); //为空判断 if (departmentName == "" || courseName == "") return; //实例化单选答案实体 SingleAnswerEntity singleanswerentity = new SingleAnswerEntity(); //从Cookie集合中获取课程信息 singleanswerentity.CourseName = Request.Cookies["courseName"].Value; //从Cookie结合中获取专业信息 singleanswerentity.MajorName = Request.Cookies["majorName"].Value; } 【项目解疑】 事实证明,不论我用session还是cookie存放变量值,都是可以在其他地方获取到的。那么,session和cookie有区别吗?下面就一起学习学习啦。
由于Http协议是无状态的协议,所以服务端需要记录用户的状态时,就需要用某种机制来识具体的用户,这个机制就是session。
典型的场景比如购物车,当点击下单按钮时,由于Http协议无状态,所以并不知道是哪个用户操作的,所以服务端要为特定的用户创建了特定的session,用于标识和跟踪用户,这样才知道购物车中的信息。这个session是保存在服务端的。
然而,服务端如何识别特定的客户呢?这个时候cookie就登场了。每次HTTP请求的时候,刻画段都会发送响应的cookie信息到服务端。实际上大多数的应用都是用cookie来实现session跟踪的。
如果客户端的浏览器禁用了cookie怎么办呢?一般这种情况下,会使用一种叫URL重写的技术来进行会话跟踪,即每次Http交互,URL后面都会被附加上一个诸如sid=***这样的参数,服务端据此来识别用户。
平时,我们经在自己电脑上登录一些经常性的、固定性的网站,都会保存相应的账号和密码,下次就可以自动登录了。这个信息其实就是存放在cookie中了,给予用户很大的方便。这也是cookie名称的由来,给用户的一点甜头。
iiii)单个cookie保存的数据不能超过4k,很多浏览器都限制一个站点最多保存20个cookie。
所以,大多数情况下,是将登录等重要信息存放在session中,其它信息如果需要保存,可以放在cookie中。
【项目总结】 其实,在此之前,其它项目中也早已用到了session或者cookie存放数据,自己也看过很多博客,写的都是两者的比较。 然而,自己并没有亲身体会,去应用,去比较,所以,只是留下了印象。
也正是因为如此,在这个项目中,自己的多次用到,好像条件反射一般,很自然而然地就想到了将session换成cookie尝试一下,通过自己的实践,也解答了自己的疑惑,也更加理解了两者之间的联系和区别。
ASP.NET Core Web Api之JWT VS Session VS Cookie(二) ASP.NET Core Web Api之JWT VS Session VS Cookie(二)前言本文我们来探讨下JWT VS Session的问题,这个问题本没有过多的去思考,看到评论讨论太激烈,就花了一点时间去研究和总结,顺便说一句,这就是写博客的好处,一篇博客写出有的可能是经验积累,有的可能是学习分享,但都逃不过看到文章的你有更多或更好的想法,往返交流自身能收获更多,何乐而不为呢?希望本文能解惑或者能得到更多的交流。
ASP.NET WebApi 基于分布式Session方式实现Token签名认证(发布版) 一、课程介绍 明人不说暗话,跟着阿笨一起学玩WebApi!开发提供数据的WebApi服务,最重要的是数据的安全性。那么对于我们来说,如何确保数据的安全将会是需要思考的问题。在ASP.NETWebService服务中可以通过SoapHead验证机制来实现,那么在ASP.NET WebApi中我们应该如何保证我们的接口安全呢?如果您对本次分享课程《ASP.NET WebApi 基于分布式Session方式实现Token签名认证》感兴趣的话,那么请跟踪阿笨一起学习吧。
ASP.NET Core 2 学习笔记(十一)Cookies & Session 原文:ASP.NET Core 2 学习笔记(十一)Cookies & Session 基本上HTTP是没有记录状态的协定,但可以通过Cookies将Request来源区分出来,并将部分数据暂存于Cookies及Session,是写网站常用的用户数据暂存方式。
相关文章
- asp.net web 开发登录相关操作的控件LoginName、LoginStatus和LoginView控件使用详解
- 出现net.sf.json.JSONException: There is a cycle in the hierarchy异常的解决办法
- 《ASP.NET MVC4 WEB编程》学习笔记------UrlHelper
- C#.NET常见问题(FAQ)-无法直接启动带有类库输出类型的项目怎么办
- C#.NET常见问题(FAQ)-想要另存一个项目,sln文件丢了怎么办,如何打开高版本的项目
- ASP.NET给图片自动添加水印
- Asp.Net Web API 2第十六课——Parameter Binding in ASP.NET Web API(参数绑定)
- asp.net C#数据导出Excel实例介绍
- ASP.NET MVC 随想录
- 重新整理 .net core 实践篇————网关[三十六]
- Asp.net程序中为IIS新建用户
- asp .net core 单页应用
- ASP.NET 运行状况监视的日志记录错误详细信息 (C#)
- ASP.NET Core 6框架揭秘实例演示[11]:诊断跟踪的几种基本编程方式
- ASP.NET Core错误处理中间件[4]: 响应状态码错误页面
- 为了支持AOP的编程模式,我为.NET Core写了一个轻量级的Interception框架[开源]
- ASP.NET Core的配置(5):配置的同步[设计篇]
- [ASP.NET] 如果将缓存“滑动过期时间”设置为1秒会怎样?
- 如果调用ASP.NET Web API不能发送PUT/DELETE请求怎么办?
- Atitit 软件运行环境平台的变迁 attilax大总结 1.1.Native os时代 1.2.Vm时代 java net php 1.3.Script时代 js node。js 1.4.B
- ASP.NET Core微服务(六)——【.Net Core操作redis】StackExchange.Redis
- ASP.NET Application,Session,Cookie和ViewState等对象用法和区别 (转)
- ASP.net 的URL路由选择(System.Web.Routing.dll)
- WPF:TX Text Control .NET 31.0 sp2 Crack
- net core HTTP Error 500.31 - Failed to load ASP.NET Core runtime HTTP Error 500.30
- 关于ASP.net开启身份验证时集成的托管管道模式下不适用的 ASP.NET 设置