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,如需转载请自行联系原作者

目录
相关文章
|
2月前
|
C# Android开发 iOS开发
2025年全面的.NET跨平台应用框架推荐
2025年全面的.NET跨平台应用框架推荐
105 23
|
3月前
|
存储 前端开发 Java
【SpringMVC】——Cookie和Session机制
获取URL中参数@PathVarible,上传文件@RequestPart,HttpServerlet(getCookies()方法,getAttribute方法,setAttribute方法,)HttpSession(getAttribute方法),@SessionAttribute
|
4月前
|
开发框架 监控 .NET
【Azure App Service】部署在App Service上的.NET应用内存消耗不能超过2GB的情况分析
x64 dotnet runtime is not installed on the app service by default. Since we had the app service running in x64, it was proxying the request to a 32 bit dotnet process which was throwing an OutOfMemoryException with requests >100MB. It worked on the IaaS servers because we had the x64 runtime install
|
4月前
|
存储 安全 搜索推荐
理解Session和Cookie:Java Web开发中的用户状态管理
理解Session和Cookie:Java Web开发中的用户状态管理
128 4
|
4月前
|
存储 缓存 网络协议
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点,GET、POST的区别,Cookie与Session
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点、状态码、报文格式,GET、POST的区别,DNS的解析过程、数字证书、Cookie与Session,对称加密和非对称加密
|
5月前
|
缓存 Java Spring
servlet和SpringBoot两种方式分别获取Cookie和Session方式比较(带源码) —— 图文并茂 两种方式获取Header
文章比较了在Servlet和Spring Boot中获取Cookie、Session和Header的方法,并提供了相应的代码实例,展示了两种方式在实际应用中的异同。
349 3
servlet和SpringBoot两种方式分别获取Cookie和Session方式比较(带源码) —— 图文并茂 两种方式获取Header
|
4月前
|
JSON 算法 安全
JWT Bearer 认证在 .NET Core 中的应用
【10月更文挑战第30天】JWT(JSON Web Token)是一种开放标准,用于在各方之间安全传输信息。它由头部、载荷和签名三部分组成,用于在用户和服务器之间传递声明。JWT Bearer 认证是一种基于令牌的认证方式,客户端在请求头中包含 JWT 令牌,服务器验证令牌的有效性后授权用户访问资源。在 .NET Core 中,通过安装 `Microsoft.AspNetCore.Authentication.JwtBearer` 包并配置认证服务,可以实现 JWT Bearer 认证。具体步骤包括安装 NuGet 包、配置认证服务、启用认证中间件、生成 JWT 令牌以及在控制器中使用认证信息
195 2
|
5月前
|
存储 安全 数据安全/隐私保护
Cookie 和 Session 的区别及使用 Session 进行身份验证的方法
【10月更文挑战第12天】总之,Cookie 和 Session 各有特点,在不同的场景中发挥着不同的作用。使用 Session 进行身份验证是常见的做法,通过合理的设计和管理,可以确保用户身份的安全和可靠验证。
109 1
|
6月前
|
存储 缓存 数据处理
php学习笔记-php会话控制,cookie,session的使用,cookie自动登录和session 图书上传信息添加和修改例子-day07
本文介绍了PHP会话控制及Web常用的预定义变量,包括`$_REQUEST`、`$_SERVER`、`$_COOKIE`和`$_SESSION`的用法和示例。涵盖了cookie的创建、使用、删除以及session的工作原理和使用,并通过图书上传的例子演示了session在实际应用中的使用。
php学习笔记-php会话控制,cookie,session的使用,cookie自动登录和session 图书上传信息添加和修改例子-day07
|
6月前
|
存储 安全 NoSQL
Cookie、Session、Token 解析
Cookie、Session、Token 解析
145 1

热门文章

最新文章