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

範例

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

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

備註

ASP.NET 會使用每個瀏覽器唯一識別會話。 根據預設,會話的唯一識別碼會儲存在瀏覽器中的非過期會話 Cookie 中。 您可以將sessionState組態專案中的 屬性設定 cookielesstrue ,以指定會話識別碼不會儲存在 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 會話識別碼的連結透過搜尋引擎或其他程式共用時,此行為可能會導致會話資料的垃圾共用。 您可以藉由停用會話識別碼的回收,減少多個用戶端共用會話資料的可能性。 若要這樣做,請將 regenerateExpiredSessionId sessionState 組態專案的 屬性設定為 true 。 當無 Cookie 會話要求以過期的會話識別碼進行時,這會導致產生新的會話識別碼。 請注意,如果以過期的會話識別碼提出的要求使用 HTTP POST 方法,則當 為 trueregenerateExpiredSessionId ,任何張貼的資料都會遺失,因為 ASP.NET 會執行重新導向,以確保瀏覽器在 URL 中有新的會話識別碼。

注意

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

適用於

另請參閱