Session要在本地记录一个SessionID的Cookie,当本地的cookie被禁用以后,session就不能用了?
1.
Session 由 SessionID 标识,这就是 Client 与 Server 之间唯一能识别的标识。
2.
而默认下 ASP.NET 将 SessionID 存在 Cookie 中,发送给客户端,每次请求,browser 自动发送回所有的cookie,当然也包括这个SessionID,server 根据这个 SessionID,就辨认出是你谁了(哪个服务端的Session)
3.
当你的Client禁用Cookie中,如果你还让SessionID存在cookie中,client就不会接受cookie,请求的时候也没有cookie发回去了,也就无法辨认了,
4.
万幸的,我们还可以通过 QueryString 来传递 SessionID,就是在 url 后面附加一个如,
http:// www.exm.com/default.aspx?sessionid=xxxxxx
5.
你可以在 web.config 启用 4 的功能
<system.web>
<sessionState cookieless="true" ></sessionState>
</system.web>
然后你浏览页面 http://www.exm.com/default.aspx,在 3.5 中应该会成为类似 http://www.exm.com/(S(21raya45is5b5nzqepbbpd45))/default.aspx
注意其中那串 (S(21raya45is5b5nzqepbbpd45)),你应该知道这用 UrlRewrite .......
6.SessionID 就像一般 Server 排放给你一把钥匙,Server 为每个 User 开了一个柜子来存这个用户自己的 User,
当你用 SessionID 打开柜子之后,你会发现还有很多隔层,每个隔层需要一把叫 SessionKey 的钥匙( Session[SomeSessionKey]=SomeSessionValue,这个钥匙是你自己掌握着(实际上是程序设计者规定的,当然程序设计者这为所有的用户的定制的柜子都是一样的)
7. HTTP 是无状态的,两次请求间 Sever 根本就不认识 Client
8. 如何传递 SessionID ?
无外两种,一个中是 HTTP 协议支持的 cookie,一种是直接在 url 中体现,所谓路径一部分或者查询字符串
在PHP中
当客户端的Cookie被禁用或出现问题时,PHP会自动把sessionid附着在URL中,这样再通过sessionid就能跨页使用session变量了。但这种附着也是有一定条件的,其一:“php.ini中的session.use_trans_sid=1或者编译时打开打开了--enable-trans-sid选项”;其二:运行PHP的服务器必须是unix/linux系统,windows不具备此项功能。
(第二条未验证)
分享到:
相关推荐
* Cookie 的依赖性:实际上客户端的 Session 信息是存储于 Cookie 中的,如果客户端完全禁用掉了 Cookie 功能,他也就不能享受到 Session 提供的功能了。 ASP.NET Session 的改进 鉴于 ASP Session 的以上缺陷,...
- **InProc、StateServer和SQLServer模式**:这些模式允许在客户端禁用Cookie的情况下使用,只需在配置文件中设置`<sessionState cookieless="true"/>`,此时会话ID将会作为URL的一部分传递给服务器。 - **禁用...
如果客户端禁用了Cookie,ASP.NET还可以通过URL重写技术将Session ID附加到URL中。 3. **HttpApplication和Global.asax**:HttpApplication是ASP.NET应用程序的核心组件,处理所有HTTP请求。Global.asax文件允许...
ASP.NET的Session和Cookie是Web开发中的两种关键的用户状态管理技术。它们允许开发者存储和检索用户特定的信息,从而提供个性化的用户体验。了解并熟练掌握这两者,对于任何ASP.NET Web应用程序的开发者来说都至关...
在 ASP.NET 中,Application、Session、Cookie 和 ViewState 是四种常见的对象,每种都有其特定的用途和特点。 1. **Application 对象** Application 对象用于在整个应用程序生命周期内共享数据,这包括所有用户。...
3. 用户禁用Cookie,因为ASP.NET默认使用Cookie来跟踪Session ID。 4. ASP.NET State Service未启用或配置不正确。 为了解决Session丢失的问题,可以考虑以下策略: - 调整Session超时时间:在Web.config中设置`...
Session是ASP.NET提供的一种机制,用于在用户的整个会话期间存储和管理数据。下面将详细介绍如何在ASP.NET MVC中利用Session进行身份验证。 首先,我们需要了解身份验证的基本概念。身份验证是确认用户身份的过程,...
在ASP.NET中,Application、Session和Cookie对象是三种非常重要的概念,它们主要用于在用户交互过程中管理和共享数据。 首先,Application对象在ASP.NET中扮演全局变量的角色,它允许开发者在整个应用程序生命周期...
Session存储的数据量比Cookie大,但若用户禁用Cookie,Session就无法工作。此外,过多的Session会消耗服务器内存,因此需要合理管理。 **ViewState** ViewState是ASP.NET控件默认使用的一种状态管理机制,用于在...
在Asp.net开发中,有时候我们需要处理用户在页面间传递数据的情况,比如在这个场景中,开发者创建了一个基于Asp.net的计算器应用,并选择了通过Session来实现数据的持久化,以便在多个页面之间维持用户的计算过程。...
在ASP.NET中,Session是一种非常重要的技术,它允许开发者在用户浏览器会话期间存储和检索数据。Session提供了在多个页面间保持状态的能力,这对于创建动态、交互式的Web应用程序至关重要。以下是对ASP.NET Session...
在ASP.NET中,每个客户端(用户的浏览器)都会被分配一个唯一的SessionID,这个ID会被存储在一个名为ASP.NET_SessionId的Cookie中。服务器通过这个ID识别不同的会话,并在服务器端存储与该会话相关的数据。 实现这...
1. **初始化Session**:在ASP.NET中,默认情况下无需额外配置即可使用Session,其默认存储模式为InProc并依赖Cookie。 2. **写入Session**:在按钮点击事件中,可以向Session写入各种类型的数据,如字符串或自定义...
在这种情况下,ASP.NET会将Session ID插入到URL中,服务器通过解析URL获取ID来找到相应的Session实例。这种方式在HTTP的GET请求中工作良好,但在XML Web服务中可能会引发问题,因为SOAP请求通常不包含URL信息。 **...
为了处理这种情况,ASP.NET提供了一种称为“URL重写”的替代方案,将SessionID嵌入到URL中,但这可能会影响链接的可共享性和SEO。 #### 七、Session的使用最佳实践 1. **最小化Session数据**:只在Session中存储...
在《计算机\教程\asp.net和C#\原版教程\Session模型简介》中,作者深入浅出地介绍了Session的基本概念及其在ASP.NET环境中的应用。 ### Session的基础知识 1. **Session的概念**: - Session可以理解为服务器为每...
ASP.NET中的SessionId是Web应用程序用来跟踪用户会话的关键组件。在ASP.NET中,当一个用户访问网站并开始与服务器交互时,系统会为该用户分配一个唯一的SessionId。这个标识符是通过加密生成的,并存储在用户的...
总的来说,防止ASP.NET页面的重复提交需要结合客户端和服务器端的多种策略,包括请求令牌、禁用按钮、状态跟踪、事务管理和前端反馈等。通过这些方法,可以有效地保护应用程序免受重复提交的影响,提高用户体验并...
在ASP.NET应用程序开发过程中,开发者经常会遇到各种各样的技术挑战和陷阱。这些问题如果不加以注意,可能会严重影响应用程序的性能、安全性和用户体验。以下是根据提供的部分信息整理出的十大常见潜在问题及其解决...
在这个"asp.net的几种传值方式练习"中,我们将探讨四种主要的数据传递方法:Session、Cookie、Application和Server.Transfer。 1. Session(会话): Session是ASP.NET中用于存储用户特定数据的重要机制。当用户...