Jędrzej
Danko
System Architect,
LookLED24.pl
Temat: Czas wygaśnięcia cookie - różnica pomiędzy FF a IE6
Złapaliśmy w firmie ciekawy błąd, czy też różnicę pomiędzy Firefoxem a IE6 (i możliwe, że innymi przeglądarkami również)Na początku dwa skrypty:
setcookie.php:
<?php
setcookie('ciacho','value', time()+60);
?>
checkcookie.php:
<?php
print_r ($_COOKIE);
?>
Musimy jeszcze zadbać o to, żeby serwer WWW zwracał czas wcześniejszy od naszego lokalnego - np. o 2 godziny (przestawiamy czas lokalny na naszym komputerze o 2 godziny do przodu ;))
Odpalamy Firefoxa, uruchamiamy pierwszy skrypt, a później drugi. Jeśli zmieściliśmy się w minucie, zobaczymy, że ciacho zostało ustawione.
Później robimy to samo w IE: cookie nie zostaje ustawione!
Co się stało?
Z naszych domysłów wynika co następuje:
Serwer, zwracając stronę, w nagłówkach umieścił nagłówek Date i nagłówek Set-Cookie, z dodatkową informacją expire={data}. Ważne jest to, że {data} jest określona jako konkretny moment, a nie jako przesunięcie.
Firefox pobiera date z nagłówka Date oraz czas wygaśnięcia ciacha, wylicza z nich przesunięcie, dodaje to przesunięcie do czasu lokalnego i w ten sposób określa czas wygaśnięcia ciacha.
IE jedynie porównuje czas lokalny i czas wygaśnięcia. W efekcie, jeśli czas serwera jest różny od czasu lokalnego, ustawienie cookie na IE przestaje być możliwe.
Różnica w działaniu jest oczywista, zastanawia nas jednak, które podejście jest prawidłowe...Jędrzej Danko edytował(a) ten post dnia 05.12.08 o godzinie 16:29