Почему IE8 неправильно жалуется на загрузку незащищенных элементов? - PullRequest
7 голосов
/ 31 июля 2011

Я управляю сайтом электронной коммерции, работающим по протоколу SSL.

Проблема возникает на последней странице корзины моего сайта, которая загружается по протоколу SSL. Проблема заключается в том, что Internet Explorer 8.0 (включая версию 8.0.6001.18702 и другие версии IE8, но, как сообщается, не все версии IE8) жалуются по крайней мере на одну незащищенную загрузку элемента, которая отпугивает некоторые из мои потенциальные клиенты. IE8 отображает диалоговое окно после того, как страница, по-видимому, полностью загружена (по-видимому, без пропущенных изображений), которое говорит:

"Предупреждение о безопасности: хотите просматривать только содержимое веб-страницы, которое было доставлено надежно? Эта веб-страница содержит контент, который не будет доставлен используя безопасное соединение HTTPS, которое может поставить под угрозу безопасность вся веб-страница. (ДА / НЕТ) "

Я пытался отследить все недействительные изображения и ссылки, которые могут загружаться через HTTP, но безрезультатно. Firebug Lite не показывает ничего небезопасного. Я начинаю думать, что это может быть ошибка в IE8, которая была исправлена ​​в IE9, которая не жалуется.

ДЛЯ ВОСПРОИЗВЕДЕНИЯ ЭТОЙ ОШИБКИ : Нажмите здесь, используя IE8 (или Chrome) , чтобы добавить товар в корзину. На появившейся странице нажмите ЗЕЛЕНУЮ кнопку справа, которая гласит: «Перейдите к Безопасной проверке». Вы заметите, что видите вышеупомянутое «Предупреждение безопасности» от IE8.

ВОПРОС : Как я могу определить, что браузер пытается загрузить небезопасно, или как я могу подавить сообщение «Предупреждение»?

ОБНОВЛЕНИЕ : Похоже, «Предупреждение безопасности» связано с приостановленным выполнением JavaScript на этой странице. Но тот же вопрос все еще остается. Как отключить или «отладить» сообщение «Предупреждение системы безопасности»?

Ответы [ 6 ]

2 голосов
/ 01 февраля 2013

Я знаю, что это старая публикация, но поскольку не было опубликовано ответа, который бы исправил мою похожую ситуацию, я подумал, что поделился тем, что нашел, на случай, если кто-нибудь еще наткнется на эту страницу. Если вы используете removeChild() для удаления элемента HTML, который содержит встроенный стиль, устанавливающий фоновое изображение, предупреждение появляется в более старых версиях IE8. Вы можете избавиться от предупреждения, переместив встроенный стиль, задающий фоновое изображение, в класс стилей, заданный в заголовке HTML или во внешней таблице стилей.

См. эту страницу Microsoft KB , в которой говорится, что сбой возникает только в IE6 и IE7, но это произошло со мной и в IE8 в XP, и это же исправление сработало.

2 голосов
/ 31 июля 2011

Wireshark обычно является излишним, если его используют для отладки стандартных приложений на основе веб-браузера, поскольку он предоставляет много информации, которая обычно не требуется для точного определения проблемы.Гораздо лучшим решением в этом случае было бы использование Fiddler , который является простым, но очень мощным прокси-сервером для отладки, который, помимо множества полезных функций, также способен четко различатьТрафик SSL и не-SSL.

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

РЕДАКТИРОВАТЬ: Я выполнил данные инструкции, чтобы спровоцировать проблему, ноне было проблем с какими-либо предупреждениями безопасности в IE8.Также Fiddler показывает, что все ресурсы загружаются через SSL.

1 голос
/ 31 июля 2011

В прошлом я сталкивался с подобной проблемой с IE8, и, похоже, это была проблема с кэшированными элементами.Я не смог полностью определить это, потому что, как и вы, я проверил все ресурсы и не нашел ничего, что не загружалось через SSL.Тем не менее, я заметил, что если я запретил все кэширование и заставил IE загрузить все ресурсы с сервера, предупреждение исчезло.

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

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

0 голосов
/ 11 декабря 2014

Как сказал Джон:

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

В то время как Страница Microsoft KB Это исправление, лучшее решение - реализовать его следующим образом (поместите в скрипт внизу страницы):

Ext.removeNode = Ext.isIE ? function(){
    return function(n){
        if(n && n.tagName != 'BODY'){
            n.outerHTML = "";
        }
    }
}() : function(n){
    if(n && n.parentNode && n.tagName != 'BODY'){
        n.parentNode.removeChild(n);
    }
}
0 голосов
/ 31 июля 2011

Если у вас есть страницы с поддержкой SSL, то все ресурсы (js, css, images) также должны обслуживаться по протоколу HTTPS.Такое же поведение для 90% браузеров

0 голосов
/ 31 июля 2011

Нажмите оформить заказ в верхней части страницы?

Больше не в https, не так ли?

...