Erreur "Tentative JavaScript non sécurisée d'accès au cadre avec l'URL…" générée en continu dans l'inspecteur du kit Web Chrome

129

Chrome (ou tout autre navigateur Webkit) lance une tonne de ces "tentatives JavaScript non sécurisées pour accéder au cadre avec URL ..." lorsque vous travaillez avec l'API Facebook par exemple.

Cela n'interfère pas avec le fonctionnement réel, mais cela rend la console javascript inutilisable.

J'aimerais savoir s'il existe un moyen de supprimer ces erreurs spécifiquement dans la console? Ou s'il y a d'autres solutions auxquelles vous pouvez penser, je l'apprécierais vraiment.

Merci.

Neil Sarkar
la source
1
Actuellement, j'utilise la solution de contournement consistant simplement à définir l'onglet de la console pour afficher uniquement les journaux. Je recherche une solution qui me permette de suivre les erreurs (mais pas celle-ci).
Neil Sarkar
il serait bon de fournir un exemple de la façon dont vous utilisez l'API. il y a de nombreuses raisons pour lesquelles cela pourrait arriver.
Kinlan
Je sais ce que vous voulez dire, mais je suis presque sûr que cela se produit avec n'importe quelle intégration Facebook. Pour un exemple, ouvrez votre console webkit js sur le site de ce Domino (en production) pizzaholdouts.com
Neil Sarkar
1
N'essayez-vous pas simplement de créer des scripts intersites? Demandez-vous des adresses API Facebook à votre propre serveur? La manière est un peu différente.
Tomasz Durka
4
ne demande pas quoi que ce soit, je mets juste les trucs de passe- partout pour obtenir les js sdk travail developers.facebook.com/docs/reference/javascript
Neil Sarkar

Réponses:

19

Vous pouvez autoriser les requêtes inter-domaines pendant les tests en exécutant chrome avec l' --disable-web-securityoption de ligne de commande. Cela devrait probablement éliminer l'erreur (et permettre à FB d'espionner vos tests;)

Dagg Nabbit
la source
hmm c'est intrigant ... y a-t-il un moyen de définir l'option de cette façon en dehors de la ligne de commande? J'ai essayé cela à partir de la ligne de commande: /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --disable-web-securityet cela semblait fonctionner! mais il a dit qu'il n'était pas en mesure de charger mon profil ... aucune idée de comment définir cet indicateur à partir de l'application, ou le définir par défaut sur cela?
Neil Sarkar
4
en tant que mise à jour, j'utilise maintenant exclusivement chrome, et j'aimerais toujours connaître la réponse à cette question
Neil Sarkar
2
open -a '/Applications/Google Chrome Canary.app' --args --disable-web-security
sandstrom
4

Cela se produit lorsqu'une source d'un domaine différent est chargée et tente d'accéder au document.cookie. Cela se produit avec les sources principales (balises de script) ainsi qu'avec les documents iframe qui tentent d'accéder au document.cookie pour une raison quelconque.

Celli
la source
4

Quel est le problème?

Des tonnes de Unsafe JavaScript attempt to access frame with URL...messages d'erreur dans la console Chrome JS.

Comme le souligne @thechrisproject , ces erreurs sont causées par de nombreuses API et widgets tiers réputés, y compris mais sans s'y limiter:

  • Le SDK Facebook JS
  • Vimeo Iframe Embed
  • Google Maps Iframe Embed

Ma compréhension du pourquoi : (veuillez me corriger si je me trompe)

Chrome a des paramètres de sécurité plus stricts et / ou affiche plus d'erreurs de ce type que les navigateurs concurrents. Les auteurs d'API / de widgets / d'intégration tentent de faire des choses (interdomaines / cadres) qui ne fonctionneront pas dans tous les navigateurs (probablement pour leurs propres rapports / analyses) mais qui n'affectent pas réellement l'utilisation de leur widget si ce n'est pas le cas travail (provoque juste beaucoup d'erreurs ennuyeuses)

Réponse rapide

NON, vous ne pouvez pas ( juste ) supprimer ces erreurs dans la console Chrome.

Solutions?

  • Faites avec.Ces erreurs ne cassent pas réellement ces apis et widgets tiers, elles rendent simplement la console beaucoup plus difficile à utiliser
  • vous pouvez configurer la console pour ne consigner que les messages d'avertissement, de journal ou de débogage. Cela masquera TOUTES les erreurs.
  • vous pouvez utiliser un autre navigateur
  • Comme @Dagg_Nabbit. souligné , vous pouvez autoriser les demandes inter-domaines en exécutant chrome avec l' --disable-web-securityoption de ligne de commande. Plus d'informations ici: désactivez la même politique d'origine dans Chrome . Notez que ce paramètre affectera négativement la sécurité de votre navigateur. J'ai 2 raccourcis chrome pour pouvoir l'ouvrir avec ou sans ce drapeau.
Zach Lysobey
la source
3

Puisque nous ne pouvons pas blâmer les gens de Google pour avoir construit un navigateur aussi sûr, je pense que la meilleure solution est d'utiliser les solutions côté serveur de Facebook (par exemple le SDK PHP), cela vous fera économiser beaucoup, beaucoup, beaucoup, beaucoup, beaucoup de maux de tête. Le seul avantage que je vois en utilisant le SDK javascript FB est la connexion popup que vous pouvez faire vous-même en utilisant javascript / jQuery.

Jhourlad Estrella
la source
6
Pourquoi l'utilisation du SDK PHP (ou d'un autre SDK côté serveur) vous évitera-t-elle beaucoup de maux de tête?
Steve Horn
@steve: Le simple fait que Chrome bloque la requête non sécurisée répond beaucoup à la non-sécurité du traitement côté client.
Jhourlad Estrella
2
IMHO pollution de la console JS ne devrait pas être une considération primordiale pour décider de mettre la logique côté serveur ou côté client.
Zach Lysobey
1
Performances, sécurité, organisation / maintenabilité du code, portabilité - tout ce que je considérerais en premier. stackoverflow.com/questions/1516852/…
Zach Lysobey
2

Ces erreurs peuvent être générées si, lorsque vous enregistrez votre application sur Facebook, vous n'avez pas de barre oblique de fin dans le champ URL du site. En d'autres termes, vous avez besoin de " http://domaine.com / " et non de " http://domaine.com "

Vous pouvez vérifier le paramètre URL du site à partir de developer.facebook.com/apps Modifier les paramètres -> De base -> URL du site.

Rob H
la source
Pouvez-vous me clarifier votre phrase?
itinance