Приспособление за коментари във Facebook през HTTPS/SSL предупреждение за сигурност в IE7 и IE8

Опитвам се да добавя приспособлението за коментари във Facebook към страница, която се обслужва през SSL/HTTPS. Приспособлението работи добре, но когато се опитам да заредя страницата в IE7 или IE8, получавам предупреждение за сигурност „смесено съдържание“.

Прегледах и проверих, че не препращаме към несигурни ресурси в страницата. Премахването на приспособлението за коментари във facebook кара предупреждението да изчезне. Използвайки fiddler, се опитах да определя ресурса, който е препратен, но доколкото можах да видя, нищо не се изтегля през 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 през HTTPS зареждане незащитени елементи, но нито едно от предложенията там не е имало ефект. Подозирам, че този проблем е различен, тъй като не виждам предупреждения и в други браузъри.

Всяко прозрение ще бъде високо оценено.


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


Отговори (1)


Изглежда, че правите всичко както трябва, дори проверявате заявките с помощта на Fiddler. Определено е много разочароващо, когато все още не можете да видите какво се случва.

Нямам окончателен отговор за вас, но мога да предложа една възможност

Известно е, че IE8 и по-стари хвърлят грешки като тази, когато има празна страница във вградена рамка. например рамката е създадена с помощта на javascript, но няма заредено съдържание или е попълнена с about:blank като URL.

Имам чувството, че може да се случи и ако имате съдържание с грешки (напр. грешки 404), но не съм толкова сигурен в това. Определено е известен бъг с празно съдържание.

Това, което се случва, е, че когато IE проверява сигурността на страницата, той неправилно комбинира относителни URL адреси във вашата страница с about:blank URL, което води до URL адреси като about:/myimage.jpg, и след това вижда, че това е извън HTTPS защитената зона, и по този начин получавате предупреждения за смесено съдържание.

Можете да видите друго обсъждане на тази грешка тук: Какви точно са правилата за избягване на предупреждението за смесено съдържание в IE поради фонови изображения?

Решението, описано там, е да направите всичките си URL адреси абсолютни URL адреси, с включени пълния домейн и протокол.

Надявам се това да помогне.

person Spudley    schedule 31.10.2012
comment
Благодаря за предложението Не знаех за този проблем с IE8 преди. Изглежда правдоподобно това да е причината, но ако кодът на Facebook създава празния iFrame, не съм сигурен дали мога да направя нещо по въпроса. Все пак ще погледна. - person lintmachine; 01.11.2012