cookie не работает в Internet Explorer - PullRequest
3 голосов
/ 15 января 2010

Я добавляю значение в cookie, используя

Cookie testcookie = new Cookie ("test",test);
testcookie .setMaxAge(5*60);
response.addCookie(testcookie) ;

Но я не получаю значение cookie в Internet Explorer. код получения значения cookie

Cookie cookies [] = getRequest().getCookies ();
    Cookie myCookie = null;
    if (cookies != null)
    {

        for (int i = 0; i < cookies.length; i++) 
        {
            if (cookies [i].getName().equals ("test"))
            {
                myCookie = cookies[i];
                String testval=myCookie.getValue();
            }
        }
    }

Но то же самое работает в Firefox, в IE включены куки. Как решить эту проблему?

Ответы [ 2 ]

1 голос
/ 17 января 2012

Я столкнулся с той же проблемой в эти дни, и я только что нашел решение. Попробуйте установить cookie вручную, так как javax.servlet.http.Cookie не позволяет установить атрибут Expires:

StringBuilder cookie = new StringBuilder("test=" + test + "; ");

DateFormat df = new SimpleDateFormat("EEE, dd-MMM-yyyy HH:mm:ss 'GMT'", Locale.US);
Calendar cal = Calendar.getInstance();
cal.add(Calendar.SECOND, 5*60);
cookie.append("Expires=" + df.format(cal.getTime()) + "; ");
cookie.append("Max-Age=" + (5*60));
response.setHeader("Set-Cookie", cookie.toString());

Надеюсь, это поможет

0 голосов
/ 23 июня 2015

Решение SimpleDateFormat работает, хотя я заметил, что файлы cookie не были удалены в то время, как я ожидал. Кажется, он напечатал время по местному времени, а средство форматирования - по Гринвичу. Если для объекта календаря выбран часовой пояс GMT и используется String.format, он будет отформатирован в нужном часовом поясе.

// Your values here
String name = "test";
String value = "test";
String path = "/";
int maxAge = 60;


StringBuilder sb = new StringBuilder();
sb.append(name);
sb.append("=");
sb.append(value);

sb.append("; path=");
sb.append(path);

Calendar cal = Calendar.getInstance();
cal.setTimeZone(TimeZone.getTimeZone("GMT"));
cal.add(Calendar.SECOND, maxAge);
sb.append("; Expires=");
sb.append(String.format(Locale.US, "%1$ta, %1$td-%1$tb-%1$tY %1$tH:%1$tM:%1$tS GMT", cal));
sb.append("; Max-Age=");
sb.append(maxAge);

response.setHeader("Set-Cookie", sb.toString());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...