Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работаем с Cookie, Почему работает корректно только в IE? 
V
    Опции темы
diablero
Дата 13.10.2007, 00:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 337
Регистрация: 3.12.2006
Где: Аркхэм

Репутация: 2
Всего: 5



Столкнулся с такой проблемой, Cookie удаляются только в IE, а в Opere 8.5 и FireFox'е нет. Из-за этого имею кучу проблем.
В чем может быть дело?
Методыы для работы с Cookie:
Код

public static final int AGE_NINETY_DAYS = 3600 * 24 * 90;
public void setLongLivedCookie(String name, String value) {
        Cookie cookie = new Cookie(name, value);
        cookie.setPath("/");
        cookie.setMaxAge(AGE_NINETY_DAYS);
        response.addCookie(cookie);
    }
    public void setTemporaryCookie(String name, String value) {
        Cookie cookie = new Cookie(name, value);
        cookie.setPath("/");
        cookie.setMaxAge(-1);
        response.addCookie(cookie);
    }
    public void resetCookie(String name) {
        Cookie[] cookies = request.getCookies();
        if (cookies != null) {
            int size = cookies.length;
            for (int i = 0; i < size; i++) {
                if (cookies[i].getName().equals(name)) {
                    cookies[i].setValue("");
                    cookies[i].setMaxAge(0);
                    response.addCookie(cookies[i]);
                    break;
                }
            }
        }
    }
    public String getCookieValue(String name) {
        Cookie[] cookies = request.getCookies();
        if (cookies != null) {
            int size = cookies.length;
            for (int i = 0; i < size; i++) {
                if (cookies[i].getName().equals(name)) return cookies[i].getValue();
            }
        }
        return null;
    }



--------------------
Есть два варианта решения проблемы - реальный и фантастический. Реальный - это когда прилетят инопланетяне и все за нас сделают ...
PM MAIL   Вверх
Stampede
Дата 13.10.2007, 04:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гносеолог
**


Профиль
Группа: Участник Клуба
Сообщений: 963
Регистрация: 25.4.2005
Где: Calgary, Alberta, Canada

Репутация: 66
Всего: 144



Цитата(diablero @  12.10.2007,  15:19 Найти цитируемый пост)
Столкнулся с такой проблемой, Cookie удаляются только в IE, а в Opere 8.5 и FireFox'е нет. Из-за этого имею кучу проблем.
В чем может быть дело?


Так а зачем ты перебираешь среди приехавших кук? Создавай новую и засылай в выдачу.

Тут дело может быть вот в чем. Та кука, которая уходит браузеру в заголовке Set-Cookie, она содержит много служебной инфы: домен там, path и пр. Это все нужно браузеру, чтобы знать, что с ней делать. А вот когда браузер шлет куку вместе с запросом, то передает только ее значение.

Потом ты в сервлете получаешь эту "недоделанную" куку и пытаешься заслать ее взад. А у нее, скорее всего, или отсутствует служебная инфа, или установлена в какие-нибудь дефолтные значения, которые приводят к эффекту, отличному от ожидаемого.

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

Но перед этим глянь Firebug'ом, как выглядит строчка Set-Cookie в неработающем варианте. Ну и нам расскажи, уж не поленись smile



--------------------
"If you want something done right, do it yourself"
По секрету: выучить английский - реально!
PM WWW   Вверх
diablero
Дата 13.10.2007, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 337
Регистрация: 3.12.2006
Где: Аркхэм

Репутация: 2
Всего: 5



Сделал:
Код

public void resetCookie(String name) {
        Cookie cookie = new Cookie(name, "");
        cookie.setMaxAge(0);
        response.addCookie(cookie);
}

Не работает. Аптека закрыта. И как я понял именно в моем случае. При выходе юзверя, куки не удаляются:
Код

public class LogoutWorker extends AbstractWorker implements Worker {
    public Page execute(HttpServletRequest request, HttpServletResponse response) {
        super.execute(request, response);

        ConfirmData data = new ConfirmData();
        data.setActionType(ConfirmData.LOGOUT_ACTION);
        request.getSession().setAttribute("confirmData", data);

        page.resetCookie("username");
        page.resetCookie("password");
        page.setRedirectUrl("/confirmation.shtml");
        return page;
    }
}
 
А вот если вызвать это метод для username и  password на странице куда пользователя редиректит после обработки этого сервлета, например на главную, то работает.
Чего такое, фиг знает, разбираюсь.


Цитата(Stampede @  13.10.2007,  04:49 Найти цитируемый пост)
Ну и нам расскажи, уж не поленись

Так сказал, типо я такой шланг, аж стыдно стало.smile

В своем Firebug'е не нашел строчку Set-Cookie. Только видел итог, т.е. до было id сессии и два параметра, пользователь и пароль, а после только сессия.

Вопрос до кучи. Шифровать данные в Cookie как лутше, ключ и значение, или можно только значение?

Это сообщение отредактировал(а) diablero - 13.10.2007, 15:59


--------------------
Есть два варианта решения проблемы - реальный и фантастический. Реальный - это когда прилетят инопланетяне и все за нас сделают ...
PM MAIL   Вверх
diablero
Дата 13.10.2007, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 337
Регистрация: 3.12.2006
Где: Аркхэм

Репутация: 2
Всего: 5



...

Это сообщение отредактировал(а) diablero - 13.10.2007, 15:58


--------------------
Есть два варианта решения проблемы - реальный и фантастический. Реальный - это когда прилетят инопланетяне и все за нас сделают ...
PM MAIL   Вверх
Stampede
Дата 13.10.2007, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гносеолог
**


Профиль
Группа: Участник Клуба
Сообщений: 963
Регистрация: 25.4.2005
Где: Calgary, Alberta, Canada

Репутация: 66
Всего: 144



Цитата(diablero @  13.10.2007,  04:38 Найти цитируемый пост)

public void resetCookie(String name) {
        Cookie cookie = new Cookie(name, "");
        cookie.setMaxAge(0);
        response.addCookie(cookie);
}


А путь? path кто будет указывать? Не исключено, что в нем и было дело.

Цитата(diablero @  13.10.2007,  04:38 Найти цитируемый пост)
В своем Firebug'е не нашел строчку Set-Cookie.


Поскольку, как оказалось, кука сбрасывается в момент редиректа, то да, так просто в Firebug'е этот момент не увидеть. Вопрос ко всем: кто чем мониторит HTTP трафик?


--------------------
"If you want something done right, do it yourself"
По секрету: выучить английский - реально!
PM WWW   Вверх
diablero
Дата 14.10.2007, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 337
Регистрация: 3.12.2006
Где: Аркхэм

Репутация: 2
Всего: 5



Цитата(Stampede @  13.10.2007,  20:40 Найти цитируемый пост)
А путь? path кто будет указывать? Не исключено, что в нем и было дело.

В нем и было делоsmile


--------------------
Есть два варианта решения проблемы - реальный и фантастический. Реальный - это когда прилетят инопланетяне и все за нас сделают ...
PM MAIL   Вверх
batigoal
Дата 14.10.2007, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 16
Всего: 151



Цитата(Stampede @  13.10.2007,  21:40 Найти цитируемый пост)
Вопрос ко всем: кто чем мониторит HTTP трафик? 

1. HTTP Analyzer
2. Effetech
3. Etherial

Добавлено через 1 минуту и 33 секунды
Цитата(Stampede @  13.10.2007,  21:40 Найти цитируемый пост)
Вопрос ко всем: кто чем мониторит HTTP трафик? 

1. HTTP Analyzer
2. Effetech
3. Etherial


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Zamuta
Дата 14.10.2007, 22:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 18.1.2006

Репутация: 4
Всего: 6



Цитата
Вопрос ко всем: кто чем мониторит HTTP трафик?


У меня в нетбинсе встроенный.  smile 

Это сообщение отредактировал(а) Zamuta - 14.10.2007, 22:38


--------------------
Thank you opensource.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0524 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.