HttpSessionState.IsCookieless 属性

定义

获取一个值,该值指示会话 ID 是嵌入在 URL 中还是存储在 HTTP Cookie 中。

public:
 property bool IsCookieless { bool get(); };
public bool IsCookieless { get; }
member this.IsCookieless : bool
Public ReadOnly Property IsCookieless As Boolean

属性值

Boolean

如果会话嵌入在 URL 中,则为 true;否则,为 false

示例

下面的代码示例在 Web.config 文件中将 cookieless 会话属性设置为 true。

<configuration>
  <system.web>
    <sessionState
      mode="InProc"
      cookieless="true"
      regenerateExpiredSessionId="true"
      timeout="30" />
  </system.web>
</configuration>

注解

ASP.NET 为每个浏览器唯一标识会话。 默认情况下,会话的唯一标识符存储在浏览器中的非过期会话 Cookie 中。 可以通过将属性设置为 cookieless true sessionState 配置元素来指定会话标识符不存储在 Cookie 中。

备注

为了提高应用程序的安全性,应用程序应允许用户注销,此时应调用该方法 Abandon 。 这减少了不需要的源使用 URL 中的唯一标识符检索用户会话中存储的专用数据的可能性。

ASP.NET 通过自动将唯一会话 ID 插入页面 URL 来维护无 Cookie 会话状态。 例如,ASP.NET 修改了以下 URL,以包含唯一会话 ID lit3py55t21z5v55vlm25s55:

http://www.example.com/(S(4danlfat035muve4g0mvgfrr))/orderform.aspx

ASP.NET 通过在将每个页面发送到浏览器之前在链接中嵌入会话 ID 值来修改所有请求页面中包含的链接。 只要用户遵循网站提供的链接路径,会话状态就保持。 但是,如果用户代理重写 URL,会话状态实例将丢失。

会话 ID 嵌入在遵循应用程序名称的斜杠之后以及任何剩余的文件或虚拟目录标识符之前。 这允许 ASP.NET 在涉及SessionStateModule请求之前解析应用程序名称。

默认情况下,将回收在无 Cookie 会话中使用的会话标识符。 也就是说,如果使用已过期的会话 ID 发出请求,将使用请求提供的会话 ID 启动新会话。 当包含无 Cookie 会话 ID 的链接通过搜索引擎或其他程序共享时,此行为可能会导致会话数据的不需要共享。 可以通过禁用会话标识符的回收来减少多个客户端共享会话数据的可能性。 为此,请将 regenerateExpiredSessionId sessionState 配置元素的属性设置为 true。 这将导致使用过期的会话 ID 发出无 Cookie 会话请求时生成新的会话 ID。 请注意,如果使用过期的会话 ID 发出的请求使用 HTTP POST 方法,则任何已发布的数据在何时丢失regenerateExpiredSessionId``true,因为 ASP.NET 执行重定向以确保浏览器在 URL 中具有新的会话标识符。

备注

设置 regenerateExpiredSessionId 属性以减少 true 不需要共享会话数据的可能性时,它不会通过获取 SessionID 对服务器的请求获取对其他用户会话的访问,防止不需要的源访问另一个用户的会话。 如果要以会话状态存储专用或敏感信息,建议使用 SSL 来加密包含该 SessionID消息的浏览器和服务器之间的任何通信。

适用于

另请参阅