У меня есть настройки моего приложения ColdFusion, чтобы установить HTTPOnly печенье, используя приведенный ниже код (от http://www.petefreitag.com/item/764.cfm):Почему HTTPOnly Cookies неправильно настроены в IE9?
<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>
(FYI, APPLICATION.SECURE_COOKIES
позволяет мне установить значение отдельного приложения для защищенных куки - производство SSL, так Я могу сделать безопасным, но моя локальная среда для разработчиков - это не SSL, поэтому это пусто.)
Когда я очищаю свои файлы cookie/сеанс в Google Chrome и перезагружаю страницу, я могу видеть заголовки ответа Set-Cookie
в отладчике :
Когда я проверить печенье в отладчике, они помечаются как HTTPOnly:
Когда я делаю то же самое в IE9, я могу видеть Set-Cookie
заголовки в отладчике:
Но для того же запроса, куки будут видны в отладчике:
Когда я перезагружать в IE9, печенье видны, но не помечена как HTTPOnly:
Что происходит здесь с IE9? Как я могу разрешить это, чтобы правильно установить HTTPOnly Cookies?
Я считаю, что были проблемы с Дев инструменты не в состоянии показать HTTPOnly печенье в IE8. В основном версия 8 не показывала их, потому что они не были доступны клиенту (HTTPOnly). Однако это должно быть разрешено в IE9. Насколько вы видите файлы cookie после перезагрузки IE9, это потому, что он показывает вам файлы cookie, которые ваш браузер отправил обратно на сервер. Обратите внимание на _Sent_ в столбце «Направление» скриншота, который вы включили. Также почему он не показывает HTTPOnly. –
@ Miguel-F Итак, как я могу подтвердить, что мой сервер устанавливает HTTPOnly-файлы cookie в IE? –
Я считаю, что ответ в заголовках. Если вы посмотрите на скриншот, который вы поделили с IE9 с заголовками ответов, в конце обеих строк _Set-Cookie_ вы можете увидеть флаг HTTPOnly. Это показывает, что сервер отправил его в браузер. Именно браузер должен уважать (или нет) этот флаг. Я думаю, что вы просто имеете дело с «работающей как спроектированная» проблема со старой версией IE. –