HttpSessionState.IsCookieless プロパティ

定義

セッション ID を URL に埋め込むか、HTTP クッキーに格納するかを示す値を取得します。

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 ファイルで session 属性を true に設定します。

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

注釈

ASP.NET は、各ブラウザーでセッションを一意に識別します。 既定では、セッションの一意識別子は、ブラウザーの有効期限が切れていないセッション Cookie に格納されます。 セッション識別子を Cookie に格納しないように指定するには、 属性を cookielesssessionState 構成要素で にtrue設定します。

Note

アプリケーションのセキュリティを向上させるには、アプリケーションでユーザーがログアウトできるようにし、その時点で メソッドを Abandon 呼び出す必要があります。 これにより、URL の一意識別子を使用して不要なソースが、ユーザーのセッションに格納されているプライベート データを取得する可能性が低くなります。

ASP.NET は、ページの URL に一意のセッション ID を自動的に挿入することで、Cookie レス セッションの状態を維持します。 たとえば、次の URL は、一意のセッション ID lit3py55t21z5v55vlm25s55 を含むように、ASP.NET によって変更されています。

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

ASP.NET は、各ページをブラウザーに送信する直前に、リンクにセッション ID 値を埋め込むことで、要求されたすべてのページに含まれるリンクを変更します。 ユーザーがサイトが提供するリンクのパスに従っている限り、セッションの状態は維持されます。 ただし、ユーザー エージェントが URL を書き換えると、セッション状態インスタンスは失われます。

セッション ID は、アプリケーション名の後のスラッシュの後、残りのファイルまたは仮想ディレクトリ識別子の前の URL に埋め込まれます。 これにより、ASP.NET 要求に を含める前にアプリケーション名を SessionStateModule 解決できます。

既定では、Cookie レス セッションで使用されるセッション識別子はリサイクルされます。 つまり、有効期限が切れたセッション ID で要求が行われた場合、要求に指定されたセッション ID を使用して新しいセッションが開始されます。 この動作により、Cookie レス セッション ID を含むリンクが検索エンジンやその他のプログラムを介して複数のブラウザーと共有されている場合に、セッション データが不要に共有される可能性があります。 セッション識別子のリサイクルを無効にすることで、セッション データが複数のクライアントで共有される可能性を減らすことができます。 これを行うには、sessionState 構成要素の 属性を に設定regenerateExpiredSessionIdしますtrue。 これにより、有効期限が切れたセッション ID で Cookie レス セッション要求が行われると、新しいセッション ID が生成されます。 期限切れのセッション ID で行われた要求で HTTP POST メソッドが使用されている場合、ASP.NET はリダイレクトを実行してブラウザーが URL に新しいセッション識別子を持っていることを確認するため、 が の場合regenerateExpiredSessionIdtrue、投稿されたデータはすべて失われることに注意してください。

Note

属性を regenerateExpiredSessionIdtrue 設定すると、セッション データが不要に共有される可能性が減りますが、値を取得 SessionID してサーバーへの要求に含めることで、別のユーザーのセッションにアクセスできる望ましくないソースから保護されることはありません。 プライベートまたは機密情報をセッション状態で格納する場合は、SSL を使用して、 を含む SessionIDブラウザーとサーバー間の通信を暗号化することをお勧めします。

適用対象

こちらもご覧ください