Я не уверен, относится ли мой вопрос к к этому или нет.
IE9 удаляет этот файл cookie после закрытия браузера (ожидается), но Chrome 12, Firefox 5 и Opera 11 этого не делают. (Во время тестирования приведенного ниже примера каждый браузер был закрыт после нажатия «Удалить учетную запись». Затем они были вновь открыты через короткий промежуток времени, и во всех файлах cookie, кроме IE9, они все еще были.)
Вариант использования: Срок действия файла cookie истекает через 1 год после последнего посещения пользователем. Удаление учетной записи должно удалить cookie.
Вопрос:
(1/2) Почему IE9 делает правильные (ожидаемые) вещи, а другие нет?
(2/2) Как я могу гарантировать, что все браузеры уничтожат этот cookie?
Пример:
login.html
<!doctype html>
<html>
<head>
<title>Create Cookie Example</title>
<script>
function setCookie() {
var expDate = new Date();
expDate.setDate(expDate.getDate() + 365);
document.cookie = "fakeCookie=" + escape("fake value")
+ "; expires=" + expDate.toGMTString();
}
</script>
</head>
<body onload="setCookie()">
<h1>Welcome</h1>
<p>Lorem ipsum...</p>
<hr size="1" />
<p><a href="profile.html">User Profile</a></p>
</body>
</html>
profile.html
<!doctype html>
<html>
<head>
<title>Delete Cookie Example</title>
<script>
function deleteConfirm() {
if ( confirm("Are you sure you want to delete your account? "
+ "All data will be lost; this action cannot be undone!")
) deleteConfirmed()
else return false
return true;
}
function deleteConfirmed() {
document.cookie = "fakeCookie=; expires=Thu, 01-Jan-70 00:00:01 GMT";
}
</script>
</head>
<body>
<h1>User Profile</h1>
<p>Lorem ipsum...</p>
<hr size="1" />
<p><a href="index.html" onclick="return deleteConfirm()">Delete Account</a></p>
</body>
</html>
Редактировать: Исходное сообщение неправильно идентифицировало login.html как index.html (образуя циклическую ссылку, которая воссоздала бы cookie при удалении «аккаунта»).