HttpSessionState.IsCookieless 屬性

定義

取得值,指出工作階段 ID 是否內嵌於 URL 或儲存於 HTTP Cookie。

C#
public bool IsCookieless { get; }

屬性值

如果工作階段內嵌於 URL,則為 true,否則為 false

範例

下列程式代碼範例會將 cookieless Web.config 檔案中的會話屬性設定為 true。

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

備註

ASP.NET 會使用每個瀏覽器唯一識別會話。 根據預設,會話的唯一標識符會儲存在瀏覽器中的非過期會話 Cookie 中。 您可以將 sessionState 組態元素中的 屬性true設定cookieless為 ,以指定工作階段識別碼不會儲存在 Cookie 中。

注意

若要改善應用程式的安全性,您的應用程式應該允許使用者註銷,此時應該呼叫 Abandon 方法。 這可減少使用 URL 中唯一標識符來擷取使用者會話中所儲存私人數據之垃圾來源的可能性。

ASP.NET 會自動將唯一會話標識碼插入頁面的 URL,以維護無 Cookie 會話狀態。 例如,下列 URL 已由 ASP.NET 修改,以包含唯一會話標識碼 lit3py55t21z5v55vlm25s55:

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

ASP.NET 藉由將每個頁面傳送至瀏覽器之前,將會話標識碼值內嵌在連結中,來修改所有要求頁面中包含的連結。 只要使用者遵循網站提供的鏈接路徑,就會維護會話狀態。 不過,如果使用者代理程式重寫 URL,工作階段狀態實例將會遺失。

會話標識碼會內嵌在遵循應用程式名稱的斜線之後,以及任何剩餘的檔案或虛擬目錄識別碼之前。 這可讓 ASP.NET 解析應用程式名稱,再涉及 SessionStateModule 要求中的 。

根據預設,在無 Cookie 會話中使用的會話標識符會回收。 也就是說,如果使用已過期的會話標識碼提出要求,則會使用要求所提供的會話標識碼來啟動新的會話。 當包含無 Cookie 會話標識碼的連結透過搜尋引擎或其他程式共用時,此行為可能會導致會話數據的垃圾共用。 您可以藉由停用會話標識碼的回收,減少多個用戶端共享會話數據的可能性。 若要這樣做,請將 regenerateExpiredSessionIdsessionState 組態項目的 屬性設定為 true。 當無 Cookie 會話要求以過期的會話標識碼進行時,這會導致產生新的會話標識碼。 請注意,如果以過期的會話標識碼提出的要求使用 HTTP POST 方法,則當 為 trueregenerateExpiredSessionId,任何張貼的數據都會遺失,因為 ASP.NET 會執行重新導向,以確保瀏覽器在 URL 中有新的會話標識符。

注意

當將 屬性設定 regenerateExpiredSessionId 為可 true 減少不想要共用會話數據的可能性時,它不會藉由取得 SessionID 值並將它納入伺服器的要求中,防止不想要的來源取得另一位使用者的會話存取權。 如果您要將私人或敏感性資訊儲存在會話狀態中,建議您使用 SSL 來加密包含 的瀏覽器與伺服器 SessionID之間的任何通訊。

適用於

產品 版本
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1

另請參閱