Почему файлы 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 заголовки ответа в отладчике:

Google Chrome Debugger - Headers

когда я проверяю куки в отладчике, они помечены как HTTPOnly:

Google Chrome Debugger - Cookies

когда я делаю то же самое в IE9, я вижу Set-Cookie заголовки в отладчике:

IE9 - Headers

но для того же запроса куки-файлы видны в отладчике:

IE9 - Cookies

когда я перезагружаю в IE9, куки видны, но не помечены как HTTPOnly:

enter image description here

что здесь происходит с IE9? Как я могу решить это, чтобы правильно установить файлы cookie HTTPOnly?

1 ответов


путь от комментариев

Я считаю, что была проблема с инструментами разработчика в IE8, которые не отображали бы куки с флагом HTTPOnly. Это все еще может быть проблемой с IE9, но я не смог подтвердить.

когда я перезагружаю в IE9, куки видны, но не помечены как HTTPOnly:

enter image description here

куки, которые вы видите в инструментах разработчика после перезагрузки IE9 бытие отправлено вашим браузером на сервер. Обратите внимание на отправлено в столбце направление скриншот. Вот почему он также не показывает флаг HTTPOnly как отправляемый. Это не имеет значения для сервера. Столбец направление покажет получил для cookies, отправленные с сервера.

Как я могу подтвердить, что мой сервер устанавливает файлы cookie HTTPOnly в IE?

enter image description here

Если вы посмотрите на скриншот, который вы поделились с IE9, показывая заголовки ответов, в конце обеих строк Set-Cookie вы можете увидеть флаг HTTPOnly. Это показывает, что сервер отправил браузеру. Затем браузер должен уважать (или нет) этот флаг. Я боюсь, что вы имеете дело с проблемой "работы по дизайну" с инструментами разработчика в старой версии Internet Explorer. Примечание - это только проблема с инструментами разработчика, а не поддержка браузера флаг HttpOnly.

один простой способ проверить, соблюдает ли браузер ваш флаг HTTPOnly, - это ввести следующее В адресной строке.

javascript:alert(document.cookie)

это отобразит окно со всеми файлами cookie, доступными в настоящее время для javascript. Любые файлы cookie с флагом HTTPOnly должны не будет отображаться.


Вот одна ссылка, которую я нашел -просмотр файлов cookie сеанса HttpOnly в Internet Explorer