HttpSessionState.IsCookieless Свойство

Определение

Возвращает значение, позволяющее определить, был ли идентификатор сеанса внедрен в URL-адрес или сохранен в HTTP-файле Cookie.Gets a value indicating whether the session ID is embedded in the URL or stored in an HTTP cookie.

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

Значение свойства

Если сеанс был внедрен в URL-адрес, значение true, если нет, значение false.true if the session is embedded in the URL; otherwise, false.

Примеры

В следующем примере кода для атрибута cookieless Session задается значение true в файле Web. config.The following code example sets the cookieless session attribute to true in the Web.config file.

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

Комментарии

ASP.NET определяет сеансы, уникальные для каждого браузера.ASP.NET identifies sessions uniquely with each browser. По умолчанию уникальный идентификатор сеанса хранится в файле cookie сеанса без истечения срока действия в браузере.By default, the unique identifier for a session is stored in a non-expiring session cookie in the browser. Можно указать, чтобы идентификаторы сеанса не хранились в файле cookie, задав атрибут cookieless для true в элементе конфигурации sessionState .You can specify that session identifiers not be stored in a cookie by setting the cookieless attribute to true in the sessionState configuration element.

Примечание

Чтобы повысить безопасность приложения, приложение должно разрешить пользователям выходить из системы, после чего он должен вызвать метод Abandon.To improve the security of your application, your application should allow users to log out, at which point it should call the Abandon method. Это сокращает вероятность нежелательного источника с помощью уникального идентификатора в URL-адресе для получения закрытых данных, хранящихся в сеансе для пользователя.This reduces the potential for an unwanted source using the unique identifier in the URL to retrieve private data stored in the session for a user.

ASP.NET поддерживает состояние сеанса без файлов cookie, автоматически вставляя уникальный идентификатор сеанса в URL-адрес страницы.ASP.NET maintains cookieless session state by automatically inserting a unique session ID into the page's URL. Например, следующий URL-адрес был изменен с помощью ASP.NET, чтобы включить уникальный идентификатор сеанса lit3py55t21z5v55vlm25s55:For example, the following URL has been modified by ASP.NET to include the unique session ID lit3py55t21z5v55vlm25s55:

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

ASP.NET изменяет ссылки, содержащиеся во всех запрашиваемых страницах, путем встраивания значения идентификатора сеанса в ссылки непосредственно перед отправкой каждой страницы в браузер.ASP.NET modifies the links contained in all requested pages by embedding a session-ID value in the links just before sending each page to the browser. Состояние сеанса сохраняется, если пользователь соответствует пути ссылок, предоставляемых сайтом.Session state is maintained as long as the user follows the path of links that the site provides. Однако если агент пользователя перезаписывает URL-адрес, экземпляр состояния сеанса будет потерян.However, if the user agent rewrites a URL, the session-state instance will be lost.

Идентификатор сеанса внедряется в URL-адрес после косой черты, следующей за именем приложения, и перед любым оставшимся файлом или идентификатором виртуального каталога.The session ID is embedded in the URL after the slash that follows the application name and before any remaining file or virtual-directory identifier. Это позволяет ASP.NET разрешить имя приложения перед включением в запрос SessionStateModule.This allows ASP.NET to resolve the application name before involving the SessionStateModule in the request.

По умолчанию идентификаторы сеансов, используемые в сеансах без файлов cookie, перезапускаются.By default, session identifiers used in cookieless sessions are recycled. То есть, если запрос выполняется с ИДЕНТИФИКАТОРом сеанса с истекшим сроком действия, то новый сеанс запускается с использованием идентификатора сеанса, предоставленного с запросом.That is, if a request is made with a session ID that has expired, a new session is started using the session ID supplied with the request. Такое поведение может привести к нежелательному совместному использованию данных сеанса, если ссылка, содержащая идентификатор сеанса без файлов cookie, является общей для нескольких браузеров, возможно, с помощью поисковой системы или другой программы.This behavior can result in the unwanted sharing of session data when a link that contains a cookieless session ID is shared with multiple browsers, perhaps through a search engine or other program. Можно уменьшить вероятность совместного использования данных сеанса несколькими клиентами, отключив повторное использование идентификаторов сеансов.You can reduce the possibility of session data being shared by multiple clients by disabling the recycling of session identifiers. Для этого задайте для атрибута regenerateExpiredSessionId элемента конфигурации sessionState значение true.To do this, set the regenerateExpiredSessionId attribute of the sessionState configuration element to true. Это приведет к созданию нового идентификатора сеанса при запросе сеанса без поддержки файлов cookie с просроченным ИДЕНТИФИКАТОРом сеанса.This will result in a new session ID being generated when a cookieless session request is made with an expired session ID. Обратите внимание, что если запрос, выполненный с истекшим ИДЕНТИФИКАТОРом сеанса, использует метод HTTP POST, любые отправленные данные будут потеряны, когда regenerateExpiredSessionId true, так как ASP.NET выполняет перенаправление, чтобы убедиться в том, что браузер имеет новый идентификатор сеанса в URL-адресе.Note that if the request made with the expired session ID uses the HTTP POST method, then any posted data will be lost when regenerateExpiredSessionId is true, as ASP.NET performs a redirect to ensure that the browser has the new session identifier in the URL.

Примечание

При установке атрибута regenerateExpiredSessionId в true уменьшается вероятность нежелательного совместного использования данных сеанса, он не защищает от нежелательного источника получение доступа к сеансу другого пользователя, получая значение SessionID и включая его в запросах к серверу.While setting the regenerateExpiredSessionId attribute to true reduces the possibility of unwanted sharing of session data, it does not protect against an unwanted source gaining access to the session of another user by obtaining the SessionID value and including it in requests to the server. Если конфиденциальная или конфиденциальная информация хранится в состоянии сеанса, рекомендуется использовать SSL для шифрования любого обмена данными между браузером и сервером, содержащим SessionID.If you are storing private or sensitive information in session state, it is recommended that you use SSL to encrypt any communication between the browser and server that includes the SessionID.

Применяется к

Дополнительно