Сеансовые куки и IE 8

Я недавно создал простое веб-приложение, развернутое по Tomcat. Приложение использует довольно стандартную основанную на сессии безопасность, где пользователю, который вошел в систему, дают сессию.

Сессии хорошо работают в Firefox и Chrome, но требуют использования jsessionid в URL для IE (протестировал 7 и 8), набор к средней конфиденциальности. В IE 8 я пытался переопределить обработку cookie, установку "Allow all 3rd party cookies" и "Allow all session cookies" - провал. Однако, когда я выполняю Tomcat на своей локальной машине, IE принимает куки, и сессии работают просто великолепно.

И теперь, для HTTP-заголовков.

От Chrome зарегистрированный пользователь получает сессию

GET http://devl:8080/testing/ HTTP/1.1
Host: devl:8080
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.1.249.1036 Safari/532.5
Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3

HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
P3P: CP="NON CURa ADMa DEVa TAIa OUR BUS IND UNI COM NAV INT STA"
Set-Cookie: JSESSIONID=9280023BCE2046F32B13C89130CBC397; Path=/testing
Content-Type: text/html;charset=UTF-8
Content-Language: en-US
Content-Length: 2450
Date: Fri, 26 Mar 2010 14:14:40 GMT

GET http://devl:8080/testing/logout HTTP/1.1
Host: devl:8080
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.1.249.1036 Safari/532.5
Referer: http://devl:8080/testing/
Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Cookie: JSESSIONID=9280023BCE2046F32B13C89130CBC397

...

От IE 8, со стандартной средней безопасностью уровня и конфиденциальностью -

GET http://devl:8080/testing/ HTTP/1.1
Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, */*
Accept-Language: en-US
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Win64; x64; Trident/4.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MDDC; Tablet PC 2.0)
UA-CPU: AMD64
Accept-Encoding: gzip, deflate
Host: devl:8080
Connection: Keep-Alive

HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
P3P: CP="NON CURa ADMa DEVa TAIa OUR BUS IND UNI COM NAV INT STA"
Set-Cookie: JSESSIONID=192999F922D6E9C868314452726764BA; Path=/testing
Content-Type: text/html;charset=UTF-8
Content-Language: en-US
Content-Length: 2450
Date: Fri, 26 Mar 2010 14:32:34 GMT

GET http://devl:8080/testing/logout HTTP/1.1
Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, */*
Referer: http://devl:8080/testing/;jsessionid=6371A83EFE39A46997544F9146AA5CEA
Accept-Language: en-US
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Win64; x64; Trident/4.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MDDC; Tablet PC 2.0)
UA-CPU: AMD64
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
Host: devl:8080

...

Я думал, что это мог бы быть P3P, но при добавлении компактной политики, ничто не изменяется. Это - стандартная сессия Tomcat, таким образом, я действительно удивлен, что не смог найти других людей с той же проблемой до сих пор. У кого-либо есть какие-либо идеи?

РЕДАКТИРОВАНИЕ 03.04.2010 -

Извините, если я не ясно дал понять это - что я попробовал от нескольких других экземпляров IE - коллеги вниз Холл и т.д.

РЕДАКТИРОВАНИЕ 03.04.2010 -

Я также попытался включить запрос всех cookie, но я не получаю подсказку. Установка домена в заголовке "Cookie Набора" с помощью Скрипача не имела значения, также.

8
задан Matt Luongo 2 April 2010 в 18:57
поделиться

10 ответов

Это явно не имеет никакого отношения к Tomcat, поскольку cookie устанавливается - просто не принимается IE. Тогда это должно быть проблемой безопасности в IE. Возможно, эта статья MS поможет настроить его.

0
ответ дан 5 December 2019 в 09:25
поделиться

Вы проверили правильность времени сервера?

У меня недавно были похожие проблемы с IE, который не принимал куки. После долгих раздумий выяснилось, что разница во времени между сервером и клиентской машиной настолько велика, что IE отказывается принимать куки. Однако это было в Apache.

1
ответ дан 5 December 2019 в 09:25
поделиться

Я согласен с Lexicore - протокол cookie с веб-сервера выглядит правильно, так что с IE что-то есть. Было бы легче понять, как решить эту проблему, если бы мы лучше понимали, почему IE отклоняет cookie. В качестве альтернативы попросите друга зайти на сайт в IE, чтобы подтвердить, что это проблема с сервером, а не с экземпляром браузера.

Вот несколько вещей, которые нужно проверить, чтобы помочь отладить IE и куки - к сожалению, есть масса вариантов, которые нужно проверить. Извините, если некоторые из этих пунктов кажутся простыми - я просто не хочу делать никаких предположений. Я слежу за этим в IE 8.0.

Сначала перейдите на целевой сайт ( http: // devl: 8080 / testing / ) в IE. Затем:

  1. Подтвердите, какую зону IE классифицирует как « http: // devl: 8080 / testing / ». (Это могло бы объяснить, почему он работает с Tomcat на вашем локальном компьютере.) Зона отображается в нижней панели браузера и, скорее всего, написано «Интернет». Если вместо этого написано «Местная интрасеть», «Надежный сайт» или «Ограниченный сайт», это может быть частью проблемы, и вам следует обновить свой вопрос или выяснить, почему он не классифицируется как Интернет.

  2. Дважды щелкните индикатор зоны в нижней панели (предположительно «Интернет»), чтобы открыть диалоговое окно «Безопасность». Установлен ли уровень безопасности для Интернета на средний-высокий? Если это не так, это может быть частью проблемы, и вам, вероятно, следует восстановить его, чтобы он соответствовал вашим пользователям.

  3. Выберите зону «Интернет», а затем нажмите кнопку «Другой ...», чтобы открыть диалоговое окно «Параметры безопасности». Убедитесь, что для параметра «Сохранение данных пользователя» установлено значение «Включить».Параметр «Сохранение пользовательских данных» находится в нижней 1/4 списка параметров в разделе «Разное» (в нижней части раздела чуть выше следующего раздела «Сценарии»).

  4. Щелкните OK в каждом диалоговом окне, чтобы закрыть их оба.

  5. В строке меню (включите, если она не включена) щелкните «Сервис»> «Свойства обозревателя». Выберите вкладку «Конфиденциальность». Я знаю, что вы упомянули, что пробовали кое-что здесь, но эти изменения могут не повлиять на ваш сайт, если ваш сайт не находится в зоне Интернета или если ваш сайт находится в списке исключений «Действия по обеспечению конфиденциальности для каждого сайта», поэтому лучше просто подтвердить.

  6. Установлен ли параметр конфиденциальности на вкладке «Конфиденциальность» на средний? Если нет, вы можете сбросить настройки до значений по умолчанию.

  7. Нажмите кнопку «Сайты», чтобы открыть диалоговое окно «Действия с конфиденциальностью для каждого сайта». Ваш сайт dev1 указан в списке? Если да, удалите его. Щелкните OK, чтобы закрыть диалоговое окно. В качестве альтернативы вы можете заставить свой сайт dev1 всегда разрешать файлы cookie.

  8. Щелкают по кнопке «Дополнительно». Установлен ли флажок «Переопределить автоматическую обработку файлов cookie?» Если да, вы можете снять этот флажок, чтобы он соответствовал вашим пользователям. В качестве альтернативы, попробуйте установить его и установить флажок «Всегда разрешать сеансовые файлы cookie».

  9. Щелкните OK в каждом диалоговом окне, чтобы закрыть оба из них.

  10. Убедитесь, что браузер все еще находится на целевом сайте (' http: // devl: 8080 / testing / '). Нажмите «Просмотр»> «Политика конфиденциальности веб-страницы ...», чтобы просмотреть отчет о конфиденциальности диалоговое окно. Есть ли в списке « http: // dev1: 8080 / testing / »? В столбце Cookie указано «Принято» для « http: // dev1: 8080 / testing / "?

  11. Выберите" http: // dev1: 8080 / testing / "из списка.Щелкните Сводка, чтобы увидеть Политику конфиденциальности. Если вы установите его для своего сайта, вы должны увидеть его здесь. В противном случае вы должны получить сообщение о том, что политика конфиденциальности не найдена. Посмотрите на нижнюю часть диалогового окна, чтобы увидеть, как сайт настроен на использование файлов cookie (сравнивать, всегда разрешать или никогда не разрешать).

Надеюсь, это поможет или даст вам некоторые идеи для реализации.


Ссылка:

1
ответ дан 5 December 2019 в 09:25
поделиться

Попробуйте использовать стандартный порт HTTP (80). Я не раз читал о проблемах с номерами портов в URL-адресах, касающихся конфиденциальности / безопасности в IE, но в настоящее время не могу найти соответствующие ссылки.

1
ответ дан 5 December 2019 в 09:25
поделиться

Судя по тому, что вы говорите, вы видели эту проблему только в IE и использовали компьютеры только в своем офисе. Установлены ли ИТ-специалистами какие-либо «пакеты безопасности» на все офисные компьютеры, и если да, можно ли их временно отключить? Часто эти типы приложений подключаются к IE и портят его HTTP-стек. Если у вас установлено подобное программное обеспечение, у вас есть "чистая" установка или компьютер стороннего производителя, на котором вы можете протестировать?

0
ответ дан 5 December 2019 в 09:25
поделиться

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

Попробуйте настроить сайт dev1, чтобы он явно входил в число надежных сайтов, например, и посмотрите, что произойдет.

Зоны:

Internet
Local Intranet
Trusted Sites
Restricted Sites

Кроме того, должен ли cookie быть ограничен путем / testing? Попробуйте установить его для / и посмотрите, имеет ли это значение.

0
ответ дан 5 December 2019 в 09:25
поделиться

Я бы попытался использовать полное имя хоста сервера. MSIE рассматривает имя хоста без доменов как находящееся в «локальной интрасети» и по-разному обрабатывает безопасность.

В частности, вместо:

http://devl:8080/testing/

Попробуйте использовать что-нибудь вроде:

http://devl.mydomain.com:8080/testing/
0
ответ дан 5 December 2019 в 09:25
поделиться

Этот форум, посвященный P3P, кажется актуальным.

Рассматривали ли вы также, как установить домен и дату истечения срока действия файла cookie сеанса?

1
ответ дан 5 December 2019 в 09:25
поделиться

Я столкнулся с этой точной проблемой, немного покопался и нашел следующее:

http://forums.iis.net/p/1147938/1879164.aspx

в котором говорится, что доменные имена, в которых есть символы подчеркивания, вызывают проблемы с Windows Server, tomcat и IE

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

9
ответ дан 5 December 2019 в 09:25
поделиться

Проблема: IE8 отказался принимать файлы cookie на сайте, который я создал, но Firefox и IE7 работали нормально и делали это целую вечность - это был стабильный код.

Решение (для меня): Мой сервер находится в другом часовом поясе по сравнению с клиентским компьютером. STUPID, IDIOTIC IE8 пытается быть умным и отказывается принимать файлы cookie (хранящиеся на локальном клиентском компьютере) с 20-минутным сроком службы. Мой PHP-код был взят прямо из учебника, таким образом:

setcookie($name,$value,time()+1200);

Но он отлично работает, если я изменю его, например, на -

setcookie($name,$value,time()+120000);

Это все еще оставляет мне проблему заставить cookie умереть через 20 минут, но, по крайней мере, теперь мои пользователи могут использовать мой веб-сайт с IE8. Я передаю эту информацию на случай, если она может помочь кому-то другому.

5
ответ дан 5 December 2019 в 09:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: