Удалить проблему Cookie - PullRequest
       14

Удалить проблему Cookie

3 голосов
/ 08 ноября 2011

У меня есть файл cookie, сохраняющий токен, когда пользователь входит на сайт www.example.com, а затем перенаправляет их на example.com/desktop или example.com/mobile в зависимости от того, какое устройство они используют. Когда они выходят из настольного приложения, я заменяю cookie на null, а затем вызываю remove cookie в GWT и перенаправляю их на www.example.com, но cookie все еще существует. Я что-то здесь не так делаю? Я не очень много работал с печеньками, поэтому немного новичок в этом.

Ответы [ 2 ]

12 голосов
/ 08 ноября 2011

Поскольку файл cookie был установлен по другому пути , вы должны использовать Cookies.removeCookie("cookieName", "/") (/ - путь, используемый в вашем примере), а не Cookies.removeCookie("cookieName").

Это потому, что без указания пути по умолчанию используется путь к текущей странице (см. document.cookie).

Итак, вы пытаетесь удалить cookie в path = / desktop, тогда как на самом деле он находится в path = /, поэтому удаление невозможно.
Помните, что у вас может быть два куки с одинаковым именем, но разными путями; так что вы можете иметь cookieName в path=/ и _ _ 1019 * cookieName в path=/desktop. Удаление cookie в path=/ не удалит один в path=/desktop, и наоборот, удаление в path=/desktop не удалит один в path=/. В качестве примечания: при доступе к /desktop браузер отправляет оба куки, которые могут иметь разные значения.

Короче говоря, поскольку вы установили свой файл cookie на /, не забывайте всегда пропускать / в качестве пути, везде, или вы можете создать новый файл cookie вместо того, чтобы изменять существующий или не удалять его (что вы испытываете прямо сейчас).

См. Также Cookies.removeCookie(String,String)

3 голосов
/ 28 января 2013

Если вам нужен домен не по умолчанию, используйте

public static native void removeCookie(String name, String path, String domain) /*-{
    $doc.cookie = name + "=" + ((path) ? ";path=" + path : "")
            + ((domain) ? ";domain=" + domain : "")
            + ";expires=Thu, 01 Jan 1970 00:00:01 GMT";
}-*/;
...