Prskavčí blog

Sep 14, 2009 - Comments

IE 8 bug s cookie a doménou jobs.cz

V práci jsme se setkali se zajímavým problémem, který se vyskytuje ojediněle, ale zato postihuje jen určitou doménu. Máme problém s Microsoft Internet Explorerem 8 a doménou jobs.cz.

IE8 odmítá nastavit cookies na doménu druhé úrovně. Nefunguje to pouze a jen pro jobs.cz, pro všechny jiné domény je to v pořádku. Je to záhada, kterou nebude jednoduché vyřešit.

Fungují všechny starší verze MS IE i všechny ostatní prohlížeče i všechny jiné domény druhé úrovně, které jsme zkusili. Nefunguje zápis serverový ani klientský. Cookies na domény třetí úrovně (www.jobs.cz apod.) rovněž bez problémů.

Zkušební skript může vypadat takto:

cookie test

YAHOO.util.Cookie.set(“jobsClientFull”, “client”, { path: “/”}); YAHOO.util.Cookie.set(“jobsClient2ndA”, “client”, { path: “/”, domain: “.jobs.cz” }); YAHOO.util.Cookie.set(“jobsClient2ndB”, “client”, { path: “/”, domain: “jobs.cz” }); YAHOO.util.Cookie.set(“jopsClientFull”, “client”, { path: “/”}); YAHOO.util.Cookie.set(“jopsClient2ndA”, “client”, { path: “/”, domain: “.jops.cz” }); YAHOO.util.Cookie.set(“jopsClient2ndB”, “client”, { path: “/”, domain: “jops.cz” });

Cookies obtained

nebo v jednodušší podobě
<?php
setcookie("serverTestCookie", "server", 0, "/", ".jobs.cz”);
?>

cookie test <script type="text/javascript" src="http://yui.yahooapis.com/2.7.0/build/yahoo/yahoo-min.js“> <script type="text/javascript" src="http://yui.yahooapis.com/2.7.0/build/cookie/cookie-min.js“>

YAHOO.util.Cookie.set(“clientTestCookie”, “client”, { path: “/”, domain: “.jobs.cz” });

Cookies obtained

příslušní virtualní host si na lokálním počítači nastavím třeba takto
DocumentRoot /srv/cookie
ServerName jobs.cz
ServerAlias www.jobs.cz jobs.cz jops.cz www.jops.cz
a k tomu nějakého hosta
127.0.0.1    wwww.jobs.cz jobs.cz www.jops.cz jops.cz
Po prvním načtení bude kolekce cookies samozřejmě prázdná, ale už po tom druhem jsou v IE8 nastaveny pouze cookies na doménu třetí úrovně, druhé nic.

Závěr

Problém zřejmě souvisí s implementaci prohlížečích viz (1, 2). V TLD existuje .jobs a proto se dá usuzovat, že k ní IE8 chová nějak jinak. Ale proč to nepostihuje např. travel.cz, museum.cz info.cz je záhadou. Zatím to vypadá na chybu v IE8, která nám opravdu hodně znepříjemňuje život.

Všichni si to můžete vyzkoušet na http://lmc.jobs.cz/cookie.php.

Udělejte refresh stránky a dostanete tento výsledek kromě MS IE8, proboha proč?

cookie_test_ok

cookie_test_fail

Pokud by byl někdo schopný pomoci s nápravou této chyby budeme vděční za pomoc.

Aktualizace: Pokud si dáte v Internet Exploreru res://urlmon.dll/ietldlist.xml dostanete se k blokovaným TLD doménám. Bohužel na něm je z ČR i jobs.cz.