Problém s neudržením session v IE 9 při zapnutém „chráněném režimu“

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
David Růžička
Člen | 43
+
0
-

Narazil jsem na podivný problém v IE 9. Když jsem přesouval web na produkční server, udělal jsem fatální chybu v tom, že jsem se rozhodl vyzkoušet web i v jiných prohlížečích než používám. Už to nikdy neudělám, protože jsem objevil chybu, která se projevila jenom v IE 9 a teď mě to trápí. Z nějakého důvodu nefungovalo přihlášení uživatele. Pátral jsem co je za problém a zjistil jsem, že jakékoliv načtení stránky (i když se nepřihlašuju) vygeneruje novou session, místo aby si to drželo jednu jako v ostatních prohlížečích. Dále jsem zjistil, že obsah session, které to generuje je úplně normální, stejný jako obsah session z jiného prohlížeče, z čehož vyvozuju, že to tu sessionu neumí zase načíst. V kódu netteovské Session.php je:

// session regenerate every 30 minutes
		$nfTime = & $nf['Time'];
		$time = time();
		if ($time - $nfTime > self::REGENERATE_INTERVAL) {
			$nfTime = $time;
			$this->regenerationNeeded = TRUE;
		}

U ie9 je ale $nfTime vždy null, takže si to zřejmě myslí, že je nutné tu sessionu regenerovat. Proč je to null, to jsem nezjistil.

Zjistil jsem ale, že když zakomentuju obě volání session_regenerate_id(), tak vše začne fungovat. To mi sice provizorně vyřešilo můj problém, ale nejsem moc šťastný z toho, že jsem tím zřejmě znetvořil nějakou bezpečnostní fičůru nette, takže bych to chtěl vyřešit jinak.

Napadlo mě, že to nemůže přečíst cookies, ale vypadalo to, že s tím problém nemá. Jistej si ale nejsem, protože byly 4 hodiny ráno a já už padal na hubu.

Zkoušel jsem měnit IEčkovské „Možnosti internetu“ a zjistil jsem, že nastavení „zóny internetu“, což mimo jiné může blokovat cookies, na problém nemá vliv.

V nastavení je i checkbox „Povolit chráněný režim“, který je implicitně zapnut. Když se to vypne, tak problém také zmizí, nicméně IE pak neustále prudí, že to je vypnuté a ať to koukám zapnout. Implicitně po instalaci je tahle fičůra zapnutá a bohužel nemohu nutit uživatele, aby si to vypínali jen proto, aby se mohli přihlásit k mému webu. Nehledě na to, že všude jinde přihlášení v ie9 funguje, včetně tohoto fóra.

Zkoušel jsem nastavovat i $iAmUsingBadHost, ale bez výsledku.

Starší verze IE jsem zkoušel jenom přes IETester, takže netuším jak průkazné to může být, ale vše tam fungovalo. Nicméně starší verze ve svém nastavení neměly žádný „chráněný režim“, který zřejmě toto chování způsobuje.

Otázka tedy zní: Setkal jste se už někdo s tímto problémem? Je to problém nette nebo je jen něco špatně nakonfigurované na serveru?
Používám Nette 2.0 pro php 5.3

David Růžička
Člen | 43
+
0
-

Hmm, tak po dalším dnu stráveném řešením tohoto problému jsem Exploreru vymazal cache a cookies a problém zmizel. Být trochu vznětlivější povahy, už by počítač i internety letěly z okna.

jtousek
Člen | 951
+
0
-

Dnes jsem se setkal s tímtéž. Dělal jsem v aplikaci nějaké změny, vše bez výsledku (kromě zmíněného zakomentování session_regenerate_id(), což se mi nelíbilo ze stejných důvodů). Problém najednou zmizel když jsem v IE dal Soubor > Nová relace – v původním okně se chyba stále projevovala, v nově otevřeném okně nikoli. Čím to je doteď nechápu, nicméně zákazník si už nestěžuje.

Editoval jtousek (14. 3. 2012 19:23)

Jakub Šulák
Člen | 222
+
0
-

Chtěl bych se zeptat, podařilo se tento problém nějak odstranit?

Jakub Šulák
Člen | 222
+
0
-

Nic, tak u mě byl problém s podtržitkem v URL adrese… což není validní a IE to tak bere.