Приложение GWT, генерирующее предупреждение о небезопасном элементе IE

Наш сервис работает через HTTPS, и в настоящее время мы экспериментируем с запуском в нем скомпилированного GWT-приложения, только на стороне клиента, без RPC:s.

Он включен в IFRAME, что рекомендуется (здесь, например: http://developerlife.com/tutorials/?p=231 под заголовком HTTPS и HTTP).

При выполнении определенных операций в GWT-приложении IE генерирует предупреждение о небезопасном элементе.

http://bagonca.com/insecure_item.png

Вы можете спросить себя, почему я не использую какой-нибудь отличный плагин для Firefox, чтобы увидеть, какой запрос может быть через http. Или почему я не использую HTTPWatch в Internet Explorer по той же причине. У меня есть. Я нигде не могу найти небезопасных запросов.

С другой стороны, я читал, что Internet Explorer выдает это предупреждение для фреймов без установленного атрибута src. И что потенциальное исправление использует src="javascript:false" для любого iframe, который заполняется динамически.

Как я уже сказал, все приложение подключается через IFRAME, и внутри него GWT сам генерирует скрытый IFRAME, как показано ниже.

<iframe tabIndex="-1" id="gwt-app" src="javascript:''" style="border-bottom: medium none; position: absolute; border-left: medium none; width: 0px; height: 0px; border-top: medium none; border-right: medium none;">

Я попытался жестко запрограммировать атрибут src выше на пустую страницу, которая действительно существует и вызывается с помощью HTTPS в том же домене. Я пробовал javascript:false; подход. Не повезло. Приложение работает как шарм, но IE выдает бесполезные и ложные предупреждения.

Предупреждение появляется, когда я выполняю определенные действия в приложении, а не при его загрузке. На самом деле при перетаскивании встреч в http://code.google.com/p/gwt-calendar/ компонент.

Кто-нибудь уже сталкивался с подобной проблемой? Любые подсказки?


person Jon Nylander    schedule 26.11.2010    source источник


Ответы (3)


Существуют и другие фрагменты Javascript, которые также могут вызывать проблемы. Посмотри пожалуйста:

http://blog.httpwatch.com/2009/09/17/even-more-problems-with-the-ie-8-mixed-content-warning/

Кроме того, просмотрите кучу комментариев на:

http://blog.httpwatch.com/2009/04/23/fixing-the-ie-8-warning-do-you-want-to-view-only-the-webpage-content-that-было-доставлено-безопасно/

Некоторые из комментаторов нашли и исправили и другие причины предупреждения.

person HttpWatchSupport    schedule 29.11.2010
comment
Большое спасибо! Благодаря комментарию к первой опубликованной вами статье в блоге, если вы нашли это: pelagodesign.com/blog/2007/10/30/ie7-removechild-and-ssl. Мы столкнулись с ситуацией, когда GWT установил для атрибута CSS background-image значение url(null); а IE был грустной пандой. - person Jon Nylander; 30.11.2010
comment
Кроме того, спасибо HttpWatch за то, что вы активно ищете людей, которым могли бы помочь. - person Jon Nylander; 30.11.2010

Любые подсказки?

Я не уверен в этом случае, но я провел несколько экспериментов с фреймами (на несколько похожую тему) около года назад. Я бы предположил, что gwt-календарь пытается связаться с главной страницей через ссылку parent javascipt. AFAIR, это не разрешено, когда хост-страница загружается не из того же источника (включая протокол).

person Chris Lercher    schedule 26.11.2010
comment
Большое спасибо за ваш ответ. Вы правы в своем предположении, что мы делаем довольно много вещей, общаясь через родительскую ссылку. Я проверю в понедельник и дам вам знать, достигнем ли мы какой-то ясности в этом вопросе. - person Jon Nylander; 26.11.2010

Это может произойти, если ваше приложение работает по протоколу HTTPS и загружает изображения или другие ресурсы по простому протоколу HTTP. Проверьте, есть ли у вас пути к изображениям или css, жестко запрограммированные на http://.

Например, если ваше приложение работает на https://example.com и вы хотите загрузить изображение foo.jpg , вы должны использовать следующий HTML-код:

<img src="https://example.com/images/foo.jpg"/>

или (в идеале)

<img src="images/foo.jpg"/>

и не

<img src="http://example.com/images/foo.jpg"/>

Обратите внимание, что в третьем примере изображение foo.jpg загружается через http вместо https. Следовательно, это может вызвать проблему, с которой вы столкнулись.

Чтобы избежать таких проблем, лучше всего использовать ImageResources. и относительные URL-адреса.

person Amey    schedule 29.11.2010
comment
Вы также можете использовать //2.example.com/images/foo.jpg, когда вам нужно обратиться к другому серверу, но вы хотите использовать тот же протокол. - person Donal Fellows; 29.11.2010
comment
Да, наша команда знает об этом. Мы трижды убедились, что таких случаев нет. Это определенно другой механизм в IE, который вызывает предупреждение. - person Jon Nylander; 30.11.2010