web-dev-qa-db-fra.com

Facebook JavaScript SDK sur HTTPS chargement d'éléments non sécurisés

J'ai une application Facebook qui utilise le Facebook Connect.js .

J'exécute mon application sur HTTPS. Tout le contenu du site est livré à partir de https:// à l'exception de certains contenus qui doivent être inclus dans le Connect.js de Facebook.

Le problème est que je reçois des messages d'avertissement indiquant qu'il y a des éléments non sécurisés dans la page.

J'ai vérifié quels scripts étaient chargés à l'aide de l'onglet Outils de développement/Réseau de Chrome pour voir quels fichiers étaient chargés et d'où.

Le seul fichier que je peux voir qui est en cours de chargement sur HTTP et non sur HTTPS est un fichier appelé http://static.ak.facebook.com/connect/canvas_proxy.php.

Comment puis-je forcer ce fichier à utiliser HTTPS?

43
paperclip

Donc, cela vous donnerait le même lien de protocole:

FB._https = (window.location.protocol == "https:");
9
sbaechler

Je suis tombé sur ce problème il y a quelques jours. Mon application entière utilisait HTTPS et mon problème concernait uniquement le chargement des images de profil via HTTP ... Mon correctif rapide et compliqué consistait à remplacer manuellement tous les noms de domaine des images de profil. Par exemple,

str_replace('http://profile.ak.fbcdn.net','https://fbcdn-profile-a.akamaihd.net',$user['pic_square']);

Vous devrez vérifier et voir l'URL de vos photos de profil. Je suppose qu'ils ne viennent pas exactement du même endroit. Affichez l'URL de votre propre photo de profil et remplacez-la par celle que j'ai sous https://fbcdn-profile-a.akamaihd.net.

Après avoir examiné plus en profondeur la documentation Facebook :

Si vous souhaitez qu'une image soit renvoyée via une connexion sécurisée, vous pouvez définir l'argument return_ssl_resources sur 1: https://graph.facebook.com/4/picture?return_ssl_resources=1 .

J'ai trouvé un paramètre supplémentaire appelé return_ssl_resources et, une fois passé avec true, il renvoie les images de profil à l'aide de HTTPS.

$fql = "SELECT uid, name, pic_square FROM user WHERE uid=me()";

$param = array( 'method' => 'fql.query', 'query' => $fql, 'return_ssl_resources'=>1);

$fbuser = $facebook->api($param);

Cela a fonctionné comme un charme, et j'ai cessé de recevoir les avertissements de sécurité mixtes. J'espère que ça aide!

8
Lix

Pour ajouter à Ralph Holzmann et Simon Bächler, ce qui suit est un correctif encore plus difficile à obtenir pour quand FB ._ https seul ne fait pas l'affaire;

FB._https = (window.location.protocol == "https:");
FB.init({
    ...
});
if (FB._https && window == window.parent) {
    if (FB._domain && FB._domain.staticfb && FB._domain.https_staticfb)
        FB._domain.staticfb = FB._domain.https_staticfb;
}

Voir aussi FB.Arbiter.inform () {... FB.getDomain ((d? 'Https _': '') + 'staticfb', true) ...} où d = window! = Window.parent && ... à partir de 2012-février-10.

2
Carl Krig

Il semble que FB._https ait été remplacé par:

FB._secure = (window.location.protocol == "https:");
1
Stephane Brillant

J'avais un problème similaire (les commentaires fb ne fonctionnaient pas en mode sécurisé). Cela résout le problème - il suffit de référencer le fichier javascript via https:

<script type="text/javascript" src="https://connect.facebook.net/en_US/all.js"></script>

Ou ne spécifiez pas le schéma qui fonctionnera pour les deux:

<script type="text/javascript" src="//connect.facebook.net/en_US/all.js"></script>
0
kraigh

Cela semble être causé par ce bug de Facebook .

Voir aussi ce forum post .

Ce bogue a été marqué comme résolu le 3/16, mais j'observe toujours les requêtes non https adressées à canvas_proxy.php. Espérons que cela sera réglé très bientôt ...

0
Mirko Froehlich

Sur une note de bas de page, si vous avez des déclarations de type doc sur votre page HTML comme ci-dessous, la référence à " http://www.w3.org " peut également afficher l'avertissement de contenu erreur dans Internet Explorer.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
0
Jim Jose