Facebook загружает ресурс через HTTP при просмотре в HTTPS - PullRequest
1 голос
/ 13 февраля 2012

Я много гуглил и не нашел ответа на эту проблему.

Я следовал документации на Facebook для реализации Facebook JS SDK. Вот фрагмент кода на моей странице

<script>
    window.fbAsyncInit = function() {
        FB.init({
            appId  : 'xxxxxxxxxxxxx',
            status : true, // check login status
            cookie : true, // enable cookies to allow the server to access the //session
            xfbml  : true, // parse XFBML
            oauth :true // Enable oauth 2.0
        });
        FB.Canvas.setAutoResize(); //set size according to iframe content size
    };

    // Load the SDK Asynchronously
    (function(d){
         var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
         js = d.createElement('script'); js.id = id; js.async = true;
         js.src = "//connect.facebook.net/en_US/all.js";
         d.getElementsByTagName('head')[0].appendChild(js);
     }(document));

</script>

Это работает довольно хорошо, за исключением одного файла: http://static.ak.facebook.com/connect/canvas_proxy.php

all.js загружается через HTTPS просто отлично. Но Facebook все еще загружается в canvas_proxy.php через обычный HTTP:

http://static.ak.facebook.com/connect/canvas_proxy.php?version=3#behavior=p&method=setSize&params=%7B%22height%22%3A714%2C%22width%22%3A1100%2C%22frame%22%3A%22iframe_canvas%22%7D

Почему это? Кажется, я все делаю правильно. Пользователи HTTPS получают предупреждение безопасности при посещении моей страницы из-за этого URL.

1 Ответ

0 голосов
/ 14 февраля 2012

Попробуйте установить FB._https = true до вызова FB.init.Это позаботится о canvas_proxy.php.

Решение, первоначально подробно описанное в Facebook JavaScript SDK через HTTPS для загрузки незащищенных элементов

...