web-dev-qa-db-fra.com

Facebook: problème JavaScript non sécurisé (les valeurs document.domain doivent être identiques)

Le mien est une application FB basée sur la toile. Face à un problème à la fois sur Chrome et Firefox (bien que généralement Chrome):

1.Lorsque je clique sur l'URL sécurisée de l'application fb approuvée dans une nouvelle fenêtre Chrome incognito ( https://apps.facebook.com/myfbappnamespace/ ), l'erreur ci-dessous ne se produit que pour la première fois et lors de l'actualisation. la page où l'erreur a disparu (la plupart du temps)

La page à propos de: contenu vierge affiché non sécurisé de http://static.ak.facebook.com/connect/xd_arbiter.php?version=18#cb=f2e4fe7b … os.com% 2Ff4aeadb2 & domain = www.mydomain.com & relation = parent & error = unknown_user.

Tentative JavaScript non sécurisée d'accéder au cadre avec l'URL http://www.mydomain.com/control/myfacebookapp/ à partir du cadre avec l'URL http://static.ak.facebook.com/connect/xd_arbiter.php?version=18#cb=f2e4fe7b … os.com% 2Ff4aeadb2 & domain = www.mondomaine.com & relation = parent & error = inconnu_utilisateur . Le cadre demandant l'accès définit 'document.domain' sur 'facebook.com', mais le cadre auquel on accède n'a pas. Les deux doivent définir 'document.domain' à la même valeur pour permettre l'accès.
xd_arbiter.php: 18

Tentative JavaScript non sécurisée d'accéder au cadre avec l'URL http://www.mydomain.com/control/myfacebookapp/ à partir du cadre avec l'URL http://static.ak.facebook.com/connect/xd_arbiter.php?version=18#cb=f2e4fe7b … os.com% 2Ff4aeadb2 & domain = www.mydomain.com & relation = parent & error = unknown_user . Le cadre demandant l'accès définit 'document.domain' sur 'facebook.com', mais le cadre auquel on accède n'a pas. Les deux doivent définir 'document.domain' à la même valeur pour permettre l'accès. xd_arbiter.php: 18

2.Lorsque j'essaie l'URL http ( http://apps.facebook.com/myfbappnamespace/ ), l'erreur affichée dans la console est la suivante:

Tentative JavaScript non sécurisée d'accéder au cadre avec l'URL http://apps.facebook.com/myfbappnamespace/ du cadre avec l'URL https://s-static.ak.facebook.com/connect/xd_arbiter.php?version=18#channel= … Fcontrol% 2Ffacebookappchannelurl% 3Ffb_xd_fragment% 23xd_sig% 3Df23e84e85c% 26 . La trame demandant l'accès a un protocole «https», la trame étant auquel on a accédé a un protocole de 'http'. Les protocoles doivent correspondre.

Maintenant, lorsque je me connecte à mon compte fb pour voir ce qui se passe avec ces erreurs, elles disparaissent, encore une fois seulement. Je sais que j'utilise «la plupart du temps» et «parfois» dans ma requête, mais c'est exactement ce qui se passe avec moi. J'ai également effectué des recherches sur des forums et me suis rendu compte que fb avait déjà résolu ce problème qui était censé être spécifique à Chrome. Je me suis assuré que mon FB.init et les autres appels sont spécifiques à location.protocol. Également configuré des valeurs correctes dans URL de toile (http) et URL de toile sécurisée (https). Également essayé avec les deux paramètres: Paramètres du compte -> Sécurité -> Navigation sécurisée -> (Activé et désactivé)

Quelqu'un peut-il s'il vous plaît aider si je manque quelque chose quelque part?

24
Bhavesh Agarwal

Il y a beaucoup de problèmes possibles. Essayez avec l'une de ces solutions:

  • les protocoles doivent être identiques (la page qui tente d'accéder à l'iframe doit donc avoir le même protocole que celui du site qui fournit l'iframe); par conséquent, si vous testez votre application en mode sandbox (http au lieu de https), désactivez l'option "Sécuriser". navigation "mode de votre compte test
  • channelUrl on FB.init()(voir le code ci-dessous)} _
  • activez les en-têtes mod d’Apache et mettez les lignes ci-dessous dans votre .htaccess
  • placez le <div id="fb-root"></div> après la balise body comme expliqué dans le doc de fb ici: https://developers.facebook.com/docs/reference/javascript/
  • essayez de mettre tout le code de connexion automatisé après une action de l'utilisateur (comme un clic sur un bouton de connexion)
  • supprimer la barre oblique de fin de l'URL de la toile (dans l'application → paramètres) comme http://yoursite.com?
  • éditez votre tag <html> comme ceci: <html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="https://www.facebook.com/2008/fbml">

Code pour .htaccess

<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
</IfModule>

Code pour le problème channels:

FB.init({
    appId: '1234567890',
    status: true,
    cookie: true,
    xfbml: true,
    channelUrl : '//yoursite.com/channel.html'
});

Le channel.html fourni par votre serveur doit contenir cette seule ligne:

<script src="//connect.facebook.net/en_US/all.js"></script>

MODIFIER

A propos de votre premier numéro:

The page at about:blank displayed insecure content from http://static.ak.facebook.com/connect/xd_arbiter.php?version=18#cb=f2e4fe7b…os.com%2Ff4aeadb2&domain=www.mydomain.com&relation=parent&error=unknown_user.

Il s'agit d'une exception attendue qui est utilisée pour tester une condition - elle n'a aucun effet secondaire, alors ne vous en souciez pas.

Veuillez vous reporter à la question suivante: Tentative de JavaScript non sécurisée pour accéder au cadre avec l’URL: les domaines, les protocoles et les ports doivent correspondre.

23
Francesco Casula

Dans mon cas, j'avais une vue "facebook-like-box" dans "_Layout" et je devais personnaliser certains CSS pour global.css fichier.

. fb_iframe_widget, .fb_iframe_widget span, .fb_iframe_widget span iframe [style] {
 largeur: 100%! important; 
} 

Ensuite, lorsque j'ai essayé de charger des pages internes, telles que Articles et News, qui comporte un bouton de partage pour Facebook, cela commence à me donner l'erreur suivante:

 Uncaught SecurityError: Impossible de lire la propriété 'contentDocument' depuis 'HTMLIFrameElement': Blocage d'un cadre avec Origin "http: // localhost: 51826" pour accéder à un cadre avec Origin "http: //static.ak.facebook. com ". Le cadre auquel on accède définit "document.domain" sur "facebook.com", contrairement au cadre demandant l'accès. Les deux doivent définir "document.domain" sur la même valeur pour autoriser l'accès .

D'une manière ou d'une autre, je pense que cette ligne de code CSS était à l'origine de ce problème (en étant au niveau global), en essayant d'accéder et de modifier le comportement de l'iframe pour mon bouton de partage.

  1. La suppression de cette ligne de code CSS a résolu le problème.
  2. Déplacer cette ligne de code CSS vers la page spécifique qui contient la "facebook-like-box" à l'intérieur des balises <style>.
0
user3516584