Почему файлы cookie HTTPOnly не устанавливаются правильно в IE9?
Я настроил приложение ColdFusion для установки файлов cookie HTTPOnly с помощью кода ниже (отhttp://www.petefreitag.com/item/764.cfm):
<cfcomponent output="false">
<cfscript>
THIS.Name = "MyCFApp";
THIS.SessionManagement = true;
THIS.SetClientCookies = false;
THIS.SessionTimeout = CreateTimeSpan(0, 3, 0, 0);
THIS.ApplicationTimeout = CreateTimeSpan(0, 8, 0, 0);
</cfscript>
<cffunction name="onSessionStart" returntype="Void" output="false">
<cfheader
name="Set-Cookie"
value="CFID=#SESSION.CFID#;path=/;HTTPOnly;#APPLICATION.SECURE_COOKIES#;" />
<cfheader
name="Set-Cookie"
value="CFTOKEN=#SESSION.CFTOKEN#;path=/;HTTPOnly;#APPLICATION.SECURE_COOKIES#;" />
<cfreturn />
</cffunction>
</cfcomponent>
(кстати, APPLICATION.SECURE_COOKIES
позволяет мне установить конкретное для приложения значение для secure cookies-production-SSL, поэтому я могу сделать secure, но моя локальная среда разработки не является SSL, поэтому она пуста.)
когда я очищаю куки / сеанс в Google Chrome и перезагружаю страницу, Я вижу Set-Cookie
заголовки ответа в отладчике:
когда я проверяю куки в отладчике, они помечены как HTTPOnly:
когда я делаю то же самое в IE9, я вижу Set-Cookie
заголовки в отладчике:
но для того же запроса куки-файлы видны в отладчике:
когда я перезагружаю в IE9, куки видны, но не помечены как HTTPOnly:
что здесь происходит с IE9? Как я могу решить это, чтобы правильно установить файлы cookie HTTPOnly?
1 ответов
путь от комментариев
Я считаю, что была проблема с инструментами разработчика в IE8, которые не отображали бы куки с флагом HTTPOnly. Это все еще может быть проблемой с IE9, но я не смог подтвердить.
когда я перезагружаю в IE9, куки видны, но не помечены как HTTPOnly:
куки, которые вы видите в инструментах разработчика после перезагрузки IE9 бытие отправлено вашим браузером на сервер. Обратите внимание на отправлено в столбце направление скриншот. Вот почему он также не показывает флаг HTTPOnly как отправляемый. Это не имеет значения для сервера. Столбец направление покажет получил для cookies, отправленные с сервера.
Как я могу подтвердить, что мой сервер устанавливает файлы cookie HTTPOnly в IE?
Если вы посмотрите на скриншот, который вы поделились с IE9, показывая заголовки ответов, в конце обеих строк Set-Cookie вы можете увидеть флаг HTTPOnly. Это показывает, что сервер отправил браузеру. Затем браузер должен уважать (или нет) этот флаг. Я боюсь, что вы имеете дело с проблемой "работы по дизайну" с инструментами разработчика в старой версии Internet Explorer. Примечание - это только проблема с инструментами разработчика, а не поддержка браузера флаг HttpOnly.
один простой способ проверить, соблюдает ли браузер ваш флаг HTTPOnly, - это ввести следующее В адресной строке.
javascript:alert(document.cookie)
это отобразит окно со всеми файлами cookie, доступными в настоящее время для javascript. Любые файлы cookie с флагом HTTPOnly должны не будет отображаться.
Вот одна ссылка, которую я нашел -просмотр файлов cookie сеанса HttpOnly в Internet Explorer