Nefungující session v Nette 0.9.3 a Chrome 37

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
bedrich
Člen | 5
+
+2
-

Zdravím,
po aktualizaci Chrome na verzi 37 přestalo fungovat cokoliv týkající se session. Konkrétně při každém požadavku se generuje nové PHPSESSID.
Předtím všechno v pořádku, až teď s novým Chrome to přestalo fungovat. Explorer a Firefox v pořádku, Chrome 36 také funguje.
V testovacím prográmku, kde jsem používal obyčejné session_start() a $_SESSION[] to funguje, takže za to asi může něco v nette.
Nemáte nějaké nakopnutí ?

Nette 0.9.3, PHP 5.3.8, Apache 2.2.14, Linux
(stejně se to chová i na localhostu se stejnou verzí nette, ale Windows a PHP 5.3.3 a Apache 2.2.22)

hitzoR
Člen | 51
+
-5
-

Proč sakra tak staré Nette? A stejně, pokud to je všude jinde vpohodě, tak se to nebude týkat Nette, ale toho konkrétního prohlížeče. ;)

bedrich
Člen | 5
+
0
-

Protože to prostě ve starém nette bylo napsané, perfektně odladěné a funkční.
Samozřejmě to bude tím prohlížečem (resp. kombinací verze nette a verze prohlížeče), ale absolutně netuším co.

bowser.net
Člen | 1
+
+11
-

Ahoj,

problém je v metodě (Nette\Web\)Session::generateVerificationKey a v tom, že nový Chrome posílá během requestu s přesměrováním různé hodnoty hlavičky Accept-Encoding a ten ověřovací řetězec, který ta funkce vytváří, se pak liší.

Řešením je zakomentovat řádek

<?php
	$key[] = $httpRequest->getHeader('Accept-Encoding');
?>
bedrich
Člen | 5
+
0
-

Geniálně jednoduché a funkční, díky.

Ještě doplním, že o pár řádek dále je podmínka

<?php
if(strpos($key[3],'MSIE 8.0')){$key[2]=substr($key[2],0,2);}
?>

tak tam je třeba o jedničku snížit indexy u $key

David Grudl
Nette Core | 8235
+
+1
-

Zkus zvážit update na 0.9.7