2012-02-13 70 views
1

我已经做了大量的搜索,并且没有找到对这个问题的答案。Facebook在HTTPS中浏览时通过HTTP加载资产

我已经按照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

所有。 js通过HTTPS加载就好了。但Facebook通过普通的HTTP仍然加载在canvas_proxy.php:

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而引发安全警告。

回答

0

尝试在FB.init调用之前设置FB._https = true。这将处理canvas_proxy.php。

解决方案最初详见Facebook JavaScript SDK over HTTPS loading non-secure items

+0

我试过了,它仍然通过HTTP加载不幸。如果是缓存的请求,我尝试清除缓存/ Cookie - 仍然加载HTTP。不过谢谢你。 – 2012-02-13 20:50:18