IE8, ajax a session
- zaxeeq
- Člen | 17
Zdravím,
hrál jsem si dneska trošku víc s ajaxem a narazil jsem na zajímavý problém. Ve firefoxu ajaxování fungovalo OK, v IE8 se vždy zneplatnila session. Zkoumáním hlaviček a třídy Session jsem našel problém – při „normálním“ requestu šla hlavička Accept-Language: cs-CZ, při ajaxovém Accept-Language: cs. Což narazilo v metodě generateVerificationKey, která i z této hlavičky generuje kontrolní klíč. Stačilo napsat potomka Session s přepsáním metody generateVerificationKey s vynecháním Accept-Language hlavičky a jeho podstrčení pomocí config.ini a vše zase jede jak má (taky by to šlo úplně vypnout pomocí Environment::getSession()->verificationKeyGenerator = FALSE, ale to jsem nechtěl :-D).
Nesetkal jste se s tímhle problémem někdo? Nebo je to jen specifikum mojí konfigurace? :)
- David Grudl
- Nette Core | 8282
Tohle se mi v IE8 nasimulovat nepodařilo.
Každopádně verificationKeyGenerator je callback, lze ho změnit na jinou vlastní funkci.
- piler
- Člen | 111
Neviem, ci to patri do tejto temy, ale mne sa taktiez rusi session nahodne pri poziadavkach (Vista a Google Chrome).
Ked pouzijem napr. thickbox, tak sa session zrusi vzdy. Neviem prist na to, kde moze byt problem.
Nastavenie session:
<?php
self::$session = new Session();
self::$session->setExpiration(0);
self::$session->setSavePath(TEMP_SESSION_DIR . '');
self::$session->regenerateId();
self::$session->start();
?>
Pouzivam to vlastnej aplikacii, cize nie cele nette.
- David Grudl
- Nette Core | 8282
session ID stačí měnit jen při operacích jako je přihlášení, odhlášení (to dělá Nette automaticky). Jindy to může vést k problémům, jako je třeba tento.