Виджет комментариев Facebook через предупреждение безопасности HTTPS / SSL в IE7 и IE8

Я пытаюсь добавить виджет комментариев Facebook на страницу, обслуживаемую через SSL / HTTPS. Виджет работает нормально, но когда я пытаюсь загрузить страницу в IE7 или IE8, я получаю предупреждение системы безопасности «смешанное содержимое».

Я просмотрел и убедился, что мы не ссылаемся на какие-либо небезопасные ресурсы на странице. Удаление виджета комментариев facebook приводит к исчезновению предупреждения. Используя скрипач, я попытался точно определить ресурс, на который ссылаются, но, насколько я мог видеть, через http ничего не перетаскивается. Я подтвердил проблему с помощью минимального варианта повторного воспроизведения, в котором на странице есть только виджет комментариев.

<!DOCTYPE html>
<html lang="en-us" xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml">
  <head>
    <title>
      Test FB Comments
    </title>
  </head>
  <body>
    <div class="fb-comments" data-href="https://www.example.com/fb_minimal.html" data-num-posts="10" data-width="470" data-colorscheme="light"></div>
    <div id="fb-root"></div>
    <script type="text/javascript">
      window.fbAsyncInit = function () {
        FB.init({ appId: 'MY_FACEBOOK_APP_ID', status: true, cookie: true,
          xfbml: true
        });
      };
      (function () {
        var e = document.createElement('script'); e.async = true;
        e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
        document.getElementById('fb-root').appendChild(e);
      } ());
    </script>
  </body>
</html>

Это загружается без предупреждения в других браузерах (Chrome, Firefox, IE9 и выше).

Я просмотрел настройки своего приложения facebook, и, похоже, все настроено правильно, хотя я новичок в интеграции с facebook, поэтому, возможно, я что-то пропустил.

Я просмотрел эту ветку, Facebook JavaScript SDK over HTTPS loading незащищенные элементы, но ни один из предложенных там предложений не подействовал. Я подозреваю, что это другая проблема, поскольку я не вижу предупреждений в других браузерах.

Приветствуется любое понимание.


person lintmachine    schedule 31.10.2012    source источник


Ответы (1)


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

У меня нет для вас окончательного ответа, но я могу предложить одну возможность

Известно, что IE8 и ниже выдают подобные ошибки, когда в iframe есть пустая страница. например, фрейм создается с использованием javascript, но не имеет загруженного содержимого или содержит about:blank в качестве URL-адреса.

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

Когда IE проверяет безопасность страницы, он неправильно комбинирует относительные URL-адреса на вашей странице с URL-адресом about:blank, что приводит к URL-адресам, подобным about:/myimage.jpg, и затем видит, что это находится за пределами безопасной зоны HTTPS, и, таким образом, вы получаете предупреждения о смешанном содержании.

Вы можете увидеть еще одно обсуждение этой ошибки здесь: Каковы именно правила, позволяющие избежать предупреждения о смешанном содержании в IE из-за фоновых изображений?

Описанное здесь решение состоит в том, чтобы сделать все ваши URL-адреса абсолютными URL-адресами, включая полный домен и протокол.

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

person Spudley    schedule 31.10.2012
comment
Спасибо за предложение. Раньше я не знал об этой проблеме с IE8. Кажется правдоподобным, что это может быть причиной, но если это код Facebook, который создает пустой iFrame, я не уверен, что я могу что-то с этим поделать. Я все же посмотрю. - person lintmachine; 01.11.2012