web-dev-qa-db-fra.com

Erreurs Javascript de Google Adsense

Sur plusieurs de mes sites en cours d'exécution AdSense, j'ai reçu les erreurs suivantes:

Impossible de publier un message sur [ http: //] googleads.g.doubleclick.net . Le destinataire a l'origine http://www.anekdotz.com .

Tentative JavaScript non sécurisée d'accéder au cadre avec l'URL [ http: //] www.anekdotz.com/ à partir du cadre avec l'URL [ http: //] googleads .g.doubleclick.net/pagead/ads? client = ca-pub-9099580055602120 & output = html & h = 250 & slotname = 9210181593 & w = 300 & flash = 10.0.42 & url = http% 3A% 2F% 2Fwww.anekdotz.com% 2F & dt = 1269901036429 & corr = 711.000.587,1269901037 & ga_sid = 1269901037 & ga_hid = 654061172 & ga_fc = 0 & u_tz = -240 & u_his = 2 & u_Java = 1 & u_h = 900 & u_w = 1440 & u_ah = 878 & u_aw = 1436 & u_cd = 24 & u_nplug = 10 & u_nmime = 101 & biw = 1365 & BH = 806 & eid = 44901212 & fu = 0 & ifi = 1 & dtd = 153 & XPC = Xkfk1oufPQ & p = http% 3A // www.anekdotz.com . Les domaines, protocoles et ports doivent correspondre.

(depuis la Chrome javascript))

Les annonces semblent s'afficher correctement et cela n'affecte pas mon code javascript natif. Cependant, ces erreurs semblent parfois ralentir le chargement des pages. Comment puis-je résoudre ce problème?

(J'ai modifié les URL pour me permettre de poster ceci car je suis un nouvel utilisateur)

79
Arjun

Google a foiré son script. Il n'y a pas grand-chose que vous puissiez faire à ce sujet.

Pour une raison quelconque, http://pagead2.googlesyndication.net/pagead/expansion_embed.js, Inclus dans la page parent par les scripts AdSense, essaie d'envoyer des informations sur l'annonce dans un <iframe> Nouvellement écrit créé pour contenir l'annonce, en utilisant le nouveau HTML5 - postMessage facilité:

            ha(this, function (f, e) {
                d[Pa](this.a[A]+"|"+f+":"+e, this.la)
            });

Ouais. Un joli code minifié/obscurci là-bas. Croyez-moi, Pa est 'postMessage'!

L'argument targetOrigin dans cet appel, this.la Est défini sur http://googleads.g.doubleclick.net. Cependant, le nouvel iframe a été écrit avec son src défini sur about:blank. Cela ne correspond pas à l'origine cible, le navigateur doit donc refuser d'envoyer le message. Seulement Chrome semble laisser tomber un véritable gémissement dans le journal de la console à ce sujet.

Aucune idée pourquoi il fait ça du tout, peu importe pourquoi il n'utilise pas seulement '*' Comme origine cible ... Je n'ai pas vraiment envie de me plonger dans le script obscur pour le découvrir. Cependant, cette erreur ne devrait pas ralentir le chargement des pages. Si vous voyez des pauses, cela résout et récupère généralement d'autres scripts externes.

79
bobince

Google essaie d'exploiter une bizarrerie de navigateur par laquelle certains navigateurs ignorent la même politique d'origine pour les fenêtres avec environ: vide comme URL, permettant à cette fenêtre de soumettre XMLHttpRequest ou, dans ce cas, les demandes postMessage à n'importe quel site.

Pour autant que je sache, les navigateurs ont récemment désactivé ce comportement. Vous devez avoir un tel navigateur patché.

Espérons que cette fonctionnalité défectueuse n'affecte pas votre capacité à gagner de l'argent grâce aux annonces.

C'est ennuyeux pour votre site de générer des erreurs Javascript sans aucune faute de votre part, mais c'est une possibilité que vous devez accepter lorsque vous exécutez le Javascript de quelqu'un d'autre sur votre page.

14
thomasrutter

C'est normal car votre navigateur empêche les attaques CSRF d'autres sites Web.

Autoriser googleads... pour accéder à votre site Web et résoudre ce problème, créez un fichier nommé crossdomain.xml dans votre webroot et remplissez-le avec le contenu suivant:

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy 
  SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
  <allow-access-from domain="googleads.g.doubleclick.net" />
</cross-domain-policy>

Pour le tester, accédez à votre domaine http://your-domain.com/crossdomain.xml et assurez-vous qu'il n'y a pas d'erreurs pour cette page. Vous avez également autorisé l'utilisation de caractères génériques, etc. (consultez la référence). Lorsque vous avez terminé, actualisez votre page. J'espère que ça t'as aidé.

Exemple en direct: http://www.blanjamudah.com/crossdomain.xml

Référence: http://en.wikipedia.org/wiki/Cross-site_request_forgeryhttp://curtismorley.com/2007/09/01/flash-flex-tutorial-how- créer un fichier crossdomainxml /

7
risnandar

Pour ceux qui atterrissent sur cette page après avoir recherché le code d'erreur de domaine et de protocole:

AdSense a publié une nouvelle version asynchrone de son javascript qui corrige les erreurs interdomaines générées lorsque nous utilisons son ancien code d'intégration. Lorsque nous avons utilisé leur code d'intégration standard sur notre site AJAX, nous avons obtenu l'erreur interdomaine. Lorsque nous avons implémenté leur code asynchrone et en combinaison avec un crossdomain.xml correctement défini l'erreur inter-domaine a disparu.

4
jfrprr

Un fichier crossdomain.xml à la racine du site permettant d'accéder à googleads.g.doubleclick.net devrait le corriger.

Voir cette page, http://www.warriorforum.com/adsense-ppc-seo-discussion-forum/458906-adsense-blank-space-problem.html

4
Chaoley

Déplacer simplement <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script> en haut de la page au-dessus des annonces, au lieu de ci-dessous, a corrigé cela pour moi

1
Vinnie James

Je viens d'avoir un problème similaire. Je ne sais pas si c'est lié, mais je vais quand même expliquer.

J'ai affiché deux annonces sur ma page et je voulais "refactoriser" le code en n'appelant ce script qu'une seule fois à la fin de la page:

<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>

Mes annonces se sont cassées et j'ai compris que cette balise de script devait être placée juste après chaque script var ads:

<script type="text/javascript"><!--
google_ad_client = "ca-pub-872346872364872364";
google_ad_slot = "719238712983";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>

Mais après avoir annulé mes modifications, la première balise de script était toujours également placée au bas de ma page et essayait donc de charger une autre de mes balises de script en tant qu'annonce. Cela a échoué et j'ai eu cette erreur que vous avez vue.

Vérifiez donc que vous conservez les deux balises de script des annonces l'une après l'autre et nulle part ailleurs, par exemple:

<script type="text/javascript"><!--
google_ad_client = "ca-pub-872346872364872364";
google_ad_slot = "719238712983";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
1
Peter

Cela semble être un cas de message d'erreur masquant la cause réelle. La vraie cause est probablement une sorte de mauvaise configuration d'Adsense; Malheureusement, Adsense ne semble pas faire suffisamment de vérifications pour donner un message d'erreur plus pertinent.

J'ai eu cette erreur moi-même et suis arrivé à cette conclusion après avoir recherché les forums, où certaines personnes ont signalé qu'il avait été corrigé après avoir vérifié leur compte bancaire ou autre chose. Dans mon cas, mon environnement côté serveur jouait avec le paramètre google_ad_client, donc le vrai problème était que ce paramètre était nul. Une fois que j'ai corrigé cela, des annonces étaient diffusées et plus de message d'erreur.

Donc, dans la pratique, cela n'a vraiment rien à voir avec la même politique d'origine. Maintenant que le code adsense est correct, je peux même maintenant afficher des annonces lors de l'exécution sur localhost, ainsi que sur le serveur.

1
mahemoff

Dans l'onglet Sites de votre tableau de bord Google Adsense (version Web ou application). Assurez-vous que votre site est configuré avec your-domain.com (ou n'importe quel tld) comme domaine et www.your-domain.com comme sous-domaine.

0
JayChase