IE8, теряющий сеансовые куки во всплывающих окнах

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

, Если Вы хотите проверить адрес против RFCs 5322 и 5321 (текущие стандарты) тогда, Вам будет нужна процедурная функция, чтобы сделать так.

, К счастью, это - товарная проблема. Все хотят тот же результат: соответствие RFC. Нет никакой потребности ни в ком написать этот код когда-либо снова, как только он был решен функцией с открытым исходным кодом.

Выезд некоторые альтернативы здесь: http://www.dominicsayers.com/isemail/

, Если Вы знаете другой функции, что я могу добавить к лицом к лицу, сообщить мне.

35
задан Community 23 May 2017 в 10:32
поделиться

7 ответов

Это «новая» функция в IE8!

Посетите блог IE8 ниже, чтобы прочитать об этом.

http://blogs.msdn.com/askie/archive/2009/03/09/opening-a-new-tab-may-launch-a- новый-процесс-с-интернет-проводником-8-0. aspx

IE8 может использовать несколько процессов для обработки x количества окон IE. Когда вы пересекаете пространство процесса, вы теряете свои куки (идентификатор сеанса Asp.Net, кажется, сохраняется за пределами этого процесса).

Я лично считаю, что это сломано или является ошибкой. Как мы знаем, при переходе к «той же цели домена» файлы cookie должны быть сохранены и отправлены повторно. IE8 имеет другое поведение обработки для обеспечения безопасности .. Отлично! что он ведет себя плохо и «отбрасывает файлы cookie даже при переходе к тому же целевому домену в другом окне», на мой взгляд, это всего лишь ошибка.

Вы можете изменить количество процессов, используемых IE8, с помощью параметров Internet Explorer, ага .. изменение параметр реестра !!!!!! (Это то, что, на мой взгляд, делает это ошибкой. IE, предоставляющий пользовательский интерфейс для изменения этих настроек, сделает его «приемлемым на уровне предприятия».

С уважением,

16
ответ дан 27 November 2019 в 15:44
поделиться

За этим стоит несколько возможностей -

  • UAC и Vista (Должно было возникнуть !!). В частности, обратите внимание на поведение в защищенном режиме.
  • Это может быть актуальной проблемой с функцией объединения сеансов в IE8 . Более того, потому что открытие нового окна с помощью ярлыка Ctrl + N вызывает волшебную отправку файлов cookie в вашем случае.
  • Проблема со старой сборкой IE (я знаю, что вы заявляли, что ваши клиенты используете последнюю сборку). Вы можете проверить информацию, доступную в Microsoft Connect, на предмет идентификаторов ошибок 408806 и 392032 .
6
ответ дан 27 November 2019 в 15:44
поделиться

Я знаю эту проблему со времен IE 5, поэтому я использую переменные сеанса только в модальных всплывающих окнах ... Когда я открываю немодальное всплывающее окно, я заменяю все переменные сеанса на кеш ASP.NET и новые коллекции объектов ... Но это очень утомительно!

В других браузерах (например, Firefox) такой проблемы нет ...

1
ответ дан 27 November 2019 в 15:44
поделиться

У нас была такая проблема на IE6, 7 и 8 .Сценарий: родительское окно (1) открывает модальное окно (2), модальное окно имеет ссылку на немодальное окно (3). Раньше я получал другой идентификатор сессии в третьем окне.

Упомянутое здесь обходное решение решило проблему http://support.microsoft.com/kb/831678

1
ответ дан 27 November 2019 в 15:44
поделиться

Начиная с IE8, мы (и наши клиенты) также сталкиваемся с той же проблемой. У нас есть сервис asp для создания форм. Это приложение использует новые окна для добавления элементов или управления учетными записями пользователей, например. Случайным образом (при открытии нового окна) приложение не получает требуемый идентификатор сеанса для аутентификации вместе с другими «постоянными» файлами cookie. Следовательно, идентификатор сеанса является временным файлом cookie. В большинстве случаев все идет хорошо, но в других случаях сеанс прерывается каждый раз, когда открывается новое окно. Мы должны посоветовать нашим клиентам закрыть все окна IE и начать заново.

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

Заявление Microsoft о том, что эти проблемы / ошибки устранены в окончательной версии, не дает мне поверить в их усилия по устранению проблемы.

1
ответ дан 27 November 2019 в 15:44
поделиться

Мы решили эту проблему, изменив «Установить рост процесса вкладки» на 0.

Хотя у нас не был включен защищенный режим, и зона была «Интранет». Очевидно, это проблема / ошибка с Windows 7 64Bit, как заявляли другие.

Эта страница (№4) привела меня к решению: http://blog.httpwatch.com/2009/04/07/seven-things-you-should-known-about-ie-8/

3
ответ дан 27 November 2019 в 15:44
поделиться

У меня похожая, хотя и не идентичная проблема. Мы загружаем веб-страницу, которая открывает всплывающее окно с помощью window.open() в элемент управления браузером IE. На машинах с IE6 и IE8 при запуске из элемента управления всплывающему окну всегда присваивается новый SessionID в ASP. Однако при запуске из обычного браузера (IE или Firefox) всплывающее окно получает существующий SessionID.

Я вижу, что при запуске из элемента управления порождается новый процесс iexplore.exe; таким образом, поведение потери сессии имеет смысл, учитывая то, что было упомянуто о том, что куки в памяти не переносятся в новый процесс.

Я все еще пытаюсь найти обходной путь ...

Обновление

Нашел работоспособное решение! Можно создать подкласс SessionIDManager и указать, что этот класс должен использоваться вместо класса по умолчанию ( в Web.config). Подкласс может искать параметр запроса, содержащий существующий идентификатор сессии в переопределении CreateSessionID(), и возвращать его, если он найден. По сути, это позволяет странице запрашивать "слияние" с существующей сессией, о которой ей известно.

Вызов window.open() затем просто требует указания этого параметра запроса в URL.

Haw-Bin

0
ответ дан 27 November 2019 в 15:44
поделиться
Другие вопросы по тегам:

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