Почему не удаляются Cookie - небольшой секрет

Каширин
На сайте с 03.01.2004
Offline
1030
1395

Хочу поделиться граблями, на которые наступил недавно.

Понятно, что куки удаляются простой перезаписью с тем же именем, но нулевым контентом и отрицательным временем:

setcookie("cookie_name",'',time()-3600,"/","domain.ru");

А вот в броузере Google Crome это не работало, и я сломал мозг, прежде, чем сделал одно наблюдение, которым хочу поделиться с вами.

На странице, куда перенаправлялся пользователь для удаления кук, был стандартный код:


header("HTTP/1.1 301 Moved Permanently");
header("Location: $url");

Стерли куки, и перебросили пользователя обратно.

Так вот - гугловский броузер, обнаружив 301 редирект - не ходит на эту страницу :) кэширует информацию на уровне броузера, и вообще даже не заходит. А сразу перебрасывает туда, куда стоит редирект :)

И правда - зачем ходить туда, где нет никто? :) Поэтому не отдавайте шибко умным броузерам 301 при интеллектуальном редиректе, и будет вам щиастие.

Ёхан Палыч
На сайте с 07.05.2006
Offline
169
#1
Каширин:
Так вот - гугловский броузер, обнаружив 301 редирект - не ходит на эту страницу кэширует информацию на уровне броузера, и вообще даже не заходит. А сразу перебрасывает туда, куда стоит редирект

Весьма странно, как он узнает про редирект если не будет перехода? Или первый раз заходит, а потом игнорирует и по памяти идет на редирект? Тогда не логично, редирект не вечен, возможно есть ограничение кеша?

Каширин
На сайте с 03.01.2004
Offline
1030
#2
Ёхан Палыч:
Весьма странно, как он узнает про редирект если не будет перехода? Или первый раз заходит, а потом игнорирует и по памяти идет на редирект? Тогда не логично, редирект не вечен, возможно есть ограничение кеша?

Все верно! Первый раз заходит, потом кэширует.

Кэширует на какое-то время, при этом перезапуск броузера не помогает.

N
На сайте с 06.05.2007
Offline
419
#3

Cами придумали проблему, сами ее героически решили :) Это ж не секрет, а изначальная ошибка проектирования.

"301 Moved Permanently" - это значит постоянно и навсегда. Почему бы chrome его не кешировать пока сможет ?

Правильный редирект для этой конкретной цели - 302 Moved temporarily.

Кнопка вызова админа ()
Ink-developer
На сайте с 31.01.2009
Offline
138
#4

С куками удобнее всего работать средствами JavaScript, я полностью отказался от работы с куками на PHP

Dreammaker
На сайте с 20.04.2006
Offline
569
#5

аналогичная ситуация и в ФФ http://phpclub.ru/talk/threads/%D0%9A%D1%82%D0%BE-%D0%BD%D0%B8%D0%B1%D1%83%D0%B4%D1%8C-%D1%83%D0%B6%D0%B5-%D1%82%D1%83%D1%82-%D1%80%D1%83%D0%B3%D0%B0%D0%BB%D1%81%D1%8F-%D0%BD%D0%B0-%D0%BA%D1%8D%D1%88%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D1%80%D0%B5%D0%B4%D0%B8%D1%80%D0%B5%D0%BA%D1%82%D0%BE%D0%B2-%D0%B2-ff.69828/

Тут именно проблема в том, что 301 редирект немного для другого предназначен :) О чем вы, собственно, и написали в конце.

Каширин
На сайте с 03.01.2004
Offline
1030
#6
netwind:
Правильный редирект для этой конкретной цели - 302 Moved temporarily.

Согласен !

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий