PRB: Переменные сеанса теряются при открытии в обозревателе Internet Explorer 6.0 страницы, содержащей теги FRAMESET

Переводы статьи Переводы статьи
Код статьи: 323752 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

В этой статье

Проблема

Если используется тег FRAMESET, объекты FRAME которого указывают на другие веб-узлы в сетях партнеров или внутри сети организации, но с использованием отличающихся доменных имен верхнего уровня, в Internet Explorer 6.0 можно заметить, что файлы «cookie», заданные в этих объектах FRAME, оказываются потерянными. Чаще всего это проявляется в потере состояния сеанса в веб-приложениях ASP (Active Server Pages) или ASP.NET. При попытке доступа к переменной в объекте Session, которая предполагается существующей, возвращается пустая строка.

Эта проблема возникает также в контексте объектов FRAME, если веб-страницы попеременно используют DNS-имена и IP-адреса.

Причина

В Internet Explorer 6.0 предусмотрена поддержка проектов P3P (Platform for Privacy Preferences). В стандарте P3P отмечается, что если тег FRAMESET или родительское окно ссылается на другой узел внутри объекта FRAME или дочернего окна, дочерний узел рассматривается как стороннее содержимое. В Internet Explorer по умолчанию используется уровень конфиденциальности Средний, при котором сторонние «cookie» блокируются без уведомления.

Решение

Можно добавить к дочернему содержимому заголовок краткой политики P3P, а также объявить, что с данными пользователя не будут выполняться несанкционированные операции. Если Internet Explorer обнаруживает политику, соответствующую требованиям конфиденциальности, «cookie» принимаются.

Полный список кодов политик, соответствующих и не соответствующих требованиям конфиденциальности, см на следующем веб-узле MSDN:

Конфиденциальность в nternet Explorer 6
http://msdn.microsoft.com/library/default.asp?url=/workshop/security/privacy/overview/privacyIE6.asp

Ниже приведена простая краткая политика, удовлетворяющая этим условиям:

P3P: CP="CAO PSA OUR"
				
Этот образец кода показывает, что ваш узел обеспечивает доступ к вашей собственной контактной информации (CAO), что любые анализируемые данные являются только «псевдо-анализируемыми» (то есть эти данные связаны с сетевым персонажем, а не реальной личностью (PSA), и что ваши данные не поставляются в какие-либо внешние организации для их использования (OUR).

Этот заголовок можно задать при использовании на ASP-странице метода Response.AddHeader. В ASP.NET можно использовать метод Response.AppendHeader. Для добавления в статический файл можно воспользоваться оснасткой «Диспетчер IIS» (inetmgr).

Чтобы добавить этот заголовок в статический файл, выполните следующие действия.
  1. Нажмите кнопку Пуск, выберите пункт Выполнить и введите команду inetmgr.
  2. В левой области навигации выберите файл или каталог на веб-узле, в который требуется добавить заголовок, щелкните его правой кнопкой и выберите команду Свойства.
  3. Откройте вкладку Заголовки HTTP.
  4. В группе Измененные заголовки HTTP нажмите кнопку Добавить.
  5. Введите P3P в качестве имени заголовка, а затем в поле строки компактной политики введите CP=..., где «...» — код краткой политики.
Кроме того, пользователи Internet Explorer могут изменить параметры конфиденциальности таким образом, чтобы обозреватель запрашивал разрешение на прием стороннего содержимого. Процедура изменения параметров конфиденциальности приведена ниже.

  1. Запустите Internet Explorer.
  2. В меню Сервис выберите команду Свойства обозревателя.
  3. Откройте вкладку Конфиденциальность и нажмите кнопку Дополнительно.
  4. Установите флажок Перекрыть автоматическую обработку файлов "cookie".
  5. Чтобы разрешить задание файлов «cookie» для сеансов ASP и ASP.NET, установите флажок Всегда разрешать сеансовые "cookie".
  6. Для вывода запроса о действиях со сторонними файлами «cookie» любого типа установите переключатель Сторонние "cookie" в положение Запрашивать.

Статус

Такое поведение является особенностью данного продукта.

Дополнительная информация

Действия для воспроизведения такого поведения

  1. Создайте файл с именем TestFrameset.asp.
  2. В одном из объектов FRAME укажите IP-адрес другого компьютера сети:
    <HTML>
    
    <FRAMESET ROWS="100%,*">
    <FRAME src="http://111.111.111.111/testFrame.asp"></FRAME>
    <FRAME src="about:blank"></FRAME>
    </FRAMESET>
    
    
    </HTML>
    					
  3. На удаленном компьютере создайте файл TestFrame.asp, воспользовавшись следующим примером:
    <HTML>
    
    <BODY>
    
    <%
    
    Response.write "Session var is " & Session("TestVar")
    Session("TestVar") = "Hello, world!"
    
    %>
    
    <BODY>
    
    <FORM METHOD="POST">
    <INPUT type="submit" value="Print TestVar">
    </FORM>
    
    </BODY>
    
    </HTML>
    					
  4. Перейдите на страницу TestFrameset.asp и выполните команду Отправка формы.
После отправки обратите внимание на то, что запись Session("TestVar") выводится как пустая, хотя должна содержать строку «Hello, world!».

Ссылки

Дополнительные сведения см. в следующих статьях базы знаний Майкрософт:
283185 Как управлять файлами «cookie» в обозревателе Internet Explorer 6
290333 Описание проекта Platform for Privacy Preferences (P3P)
293222 Параметры конфиденциальности Internet Explorer 6 по умолчанию

Свойства

Код статьи: 323752 - Последний отзыв: 14 июня 2005 г. - Revision: 1.2
Информация в данной статье относится к следующим продуктам.
  • Microsoft Internet Explorer (Programming)
Ключевые слова: 
kbprb KB323752
Заявление об отказе относительно содержимого статьи о продуктах, поддержка которых прекращена
Эта статья содержит сведения о продуктах, поддержка которых корпорацией Майкрософт прекращена. Поэтому она предлагается как есть и обновляться не будет.

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com