Да, это должно быть весело.
Я работаю над сайтом, который был построен в Fusebox 5.5 и использует iFrame.Недавно мне было поручено преобразовать сайт в Application.cfc и настроить файлы cookie, которые мы используем для индексации Google на сайте, только по HTTP, как описано здесь: http://www.petefreitag.com/item/764.cfm. Приложение работает на CF8.
Проблема, с которой я сталкиваюсь, заключается в том, что после входа пользователя на сайт данные сеанса устанавливаются после процесса входа в систему, после чего срабатывает предохранитель для загрузки домашней страницы, которая содержит функцию 'frame-buster', чтобы вывести сайт из строя.внутренний фрейм для входа и загрузки главной страницы.Когда это выполняется, IE отбрасывает сеанс и по мере загрузки остальной части страницы происходит другая проверка, которая обнаруживает, что сеанс отсутствует, и принудительно перенаправляет обратно на домашнюю страницу.Каждое перенаправление JavaScript создает новый сеанс при использовании в IE.Эта проблема не возникает в Firefox или Chrome.
Это функция frame-buster, запускаемая как onLoad в теге body:
function changeParentLocation()
{
if (top != self) {
self.location.href = <cfoutput>"#Application.rootdir#"</cfoutput>;
top.location.replace(self.location.href);
}
}
Это функция onSessionStart:
<cffunction name='onSessionStart' access='public' returntype='void' output='false'>
<cfheader name="P3P" value="CP='IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT'" />
<cfheader name="Set-Cookie" value="CFTOKEN=#session.CFTOKEN#;path=.my.sites.subdomain/;HTTPOnly">
<cfheader name="Set-Cookie" value="CFID=#session.CFID#;path=.my.sites.subdomain/;HTTPOnly">
<!---<cfcookie name="CFTOKEN" domain=".my.sites.subdomain" value="#Session.CFTOKEN#" />
<cfcookie name="CFID" domain=".my.sites.subdomain" value="#Session.CFID#" />--->
</cffunction>
Если я закомментирую файлы cookie HTTPOnly и использую вместо этого закомментированный код CFCookie, IE не пытается создать несколько сеансов.