Auf mehreren meiner Adsense-Laufseiten wurden die folgenden Fehler angezeigt:
Nachricht kann nicht an [ http: //] googleads.g.doubleclick.net gesendet werden . Der Empfänger hat seinen Ursprung http://www.anekdotz.com .
Unsicherer JavaScript-Versuch, vom Frame mit der URL [ http: //] googleads.g.doubleclick.net/pagead/ads?client=ca-pub-9099580055602120&output= auf Frame mit URL [ http: //] www.anekdotz.com/ zuzugreifen html & h = 250 & Anzeigenflächenname = 9210181593 & w = 300 & flash = 10.0.42 & url = http% 3A% 2F% 2Fwww.anekdotz.com% 2F & dt = 1269901036429 & Korrelator = 1269901036438 & frm = 0 & ga_vid = 711.000.587,1269901037 & ga_sid = 1269901037 & ga_hid = 654.061.172 & 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 & bih = 806 & eid = 44901212 & fu = 0 & ifi = 1 & dtd = 153 & xpc = Xkfk1oufPQ & p = http% 3A // ww . Domänen, Protokolle und Ports müssen übereinstimmen.
(von der Chrome Javascript Konsole)
Die Anzeigen scheinen richtig zu erscheinen und haben keinen Einfluss auf meinen nativen Javascript-Code. Manchmal scheinen diese Fehler jedoch das Laden der Seite zu verlangsamen. Wie kann ich dieses Problem beheben?
(Ich habe die URLs geändert, damit ich sie veröffentlichen kann, da ich ein neuer Benutzer bin.)
quelle
Antworten:
Google hat sein Skript durcheinander gebracht. Sie können nicht viel dagegen tun.
Aus irgendeinem Grund
http://pagead2.googlesyndication.net/pagead/expansion_embed.js
wird in der übergeordneten Seite, die in den AdSense-Skripten enthalten ist, versucht, Informationen über die Anzeige<iframe>
mithilfe der neuen HTML5-Funktion postMessage an eine neu geschriebene Anzeige für die Anzeige zu senden :ha(this, function (f, e) { d[Pa](this.a[A]+"|"+f+":"+e, this.la) });
Ja. Einige nette minimierte / verschleierte Codes dort. Vertrau mir,
Pa
ist'postMessage'
!Das
targetOrigin
Argument in diesem Aufrufthis.la
ist auf gesetzthttp://googleads.g.doubleclick.net
. Der neue Iframe wurde jedoch mit demsrc
Set to geschriebenabout:blank
. Dies stimmt nicht mit dem Zielursprung überein, daher muss der Browser das Senden der Nachricht ablehnen. Nur Chrome scheint einen tatsächlichen Fehler im Konsolenprotokoll darüber zu hinterlassen.Keine Ahnung, warum es das überhaupt macht, egal warum es nicht nur
'*'
als Zielursprung verwendet wird ... Ich habe nicht wirklich Lust, in das verschleierte Skript zu waten, um es herauszufinden. Dieser Fehler sollte jedoch nicht dazu führen, dass das Laden der Seite verlangsamt wird. Wenn Sie Pausen sehen, werden normalerweise andere externe Skripte aufgelöst und abgerufen.quelle
Google versucht, eine Browser-Eigenart auszunutzen, bei der einige Browser die Richtlinie mit demselben Ursprung für Fenster mit etwa: leer als URL ignorieren, sodass dieses Fenster XMLHttpRequest- oder in diesem Fall PostMessage-Anforderungen an eine beliebige Site senden kann.
Soweit ich weiß, haben Browser dieses Verhalten kürzlich deaktiviert. Sie müssen einen solchen gepatchten Browser haben.
Hoffentlich beeinträchtigt diese fehlerhafte Funktionalität nicht Ihre Fähigkeit, mit den Anzeigen Geld zu verdienen.
Es ist ärgerlich für Ihre Website, Javascript-Fehler ohne eigenes Verschulden zu generieren, aber es ist eine Möglichkeit, die Sie akzeptieren müssen, wenn Sie das Javascript eines anderen auf Ihrer Seite ausführen.
quelle
postMessage
kann in jeder Ansicht aufgerufen werden, ohne die gleichen Ursprungsbeschränkungen berücksichtigen zu müssen.postMessage
. Es scheint, dass dies hier nicht der Fall ist. (Warum es sich um einen Exploit handeln könnte, zitiert aus MDC: "Wenn postMessage zur Übertragung eines Passworts verwendet würde, wäre es absolut kritisch, dass dieses Argument eine URI ist, deren Ursprung mit dem beabsichtigten Empfänger der Nachricht übereinstimmt, die das Passwort enthält , um das Abfangen des Passworts durch einen böswilligen Dritten zu verhindern. ")Dies ist normal, da Ihr Browser CSRF-Angriffe von anderen Websites verhindert.
Um
googleads...
auf Ihre Website zugreifen und dieses Problem lösen zu können, erstellen Sie eine Datei mit dem Namencrossdomain.xml
in Ihrer Webroot und füllen Sie sie mit dem folgenden Inhalt:<?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>
Um es zu testen, gehen Sie zu Ihrer Domain http://your-domain.com/crossdomain.xml und stellen Sie sicher, dass für diese Seite keine Fehler vorliegen. Sie dürfen auch Platzhalter usw. verwenden (siehe Referenz). Wenn Sie fertig sind, aktualisieren Sie Ihre Seite. Hoffentlich hilft das.
Live-Beispiel: http://www.blanjamudah.com/crossdomain.xml
Referenz: http://en.wikipedia.org/wiki/Cross-site_request_forgery http://curtismorley.com/2007/09/01/flash-flex-tutorial-how-to-create-a-crossdomainxml-file/
quelle
Eine crossdomain.xml-Datei im Site-Stammverzeichnis, die den Zugriff auf googleads.g.doubleclick.net ermöglicht, sollte das Problem beheben.
Siehe diese Seite, http://www.warriorforum.com/adsense-ppc-seo-discussion-forum/458906-adsense-blank-space-problem.html
quelle
Für diejenigen, die nach der Suche nach dem Domain- und Protokollfehlercode auf dieser Seite landen:
AdSense hat eine neue asynchrone Version seines Javascript veröffentlicht, die die domänenübergreifenden Fehler behebt, die bei der Verwendung des älteren Einbettungscodes auftreten. Als wir ihren Standardeinbettungscode auf unserer AJAX-lastigen Site verwendet haben, ist der domänenübergreifende Fehler aufgetreten. Als wir ihren asynchronen Code implementiert haben und in Kombination mit einer ordnungsgemäß definierten crossdomain.xml, ist der domänenübergreifende Fehler verschwunden .
quelle
Dies scheint ein Fall zu sein, in dem die Fehlermeldung die eigentliche Ursache maskiert. Die wahre Ursache ist wahrscheinlich eine Art Adsense-Fehlkonfiguration. Leider scheint Adsense nicht genügend Überprüfungen durchzuführen, um eine relevantere Fehlermeldung zu erhalten.
Ich hatte diesen Fehler selbst und kam zu diesem Schluss, nachdem ich in den Foren recherchiert hatte, wo einige Leute berichteten, dass er nach Überprüfung ihres Bankkontos oder was auch immer behoben wurde. In meinem Fall hat meine serverseitige Umgebung mit dem Parameter google_ad_client herumgespielt, sodass das eigentliche Problem darin bestand, dass dieser Parameter null war. Nachdem ich das behoben hatte, wurden Anzeigen geschaltet und keine Fehlermeldung mehr angezeigt.
In der Praxis hat dies also wirklich nichts mit der Politik des gleichen Ursprungs zu tun. Jetzt, da der AdSense-Code korrekt ist, kann ich Anzeigen auch jetzt schalten, wenn sie auf localhost sowie auf dem Server ausgeführt werden.
quelle
Ich habe gerade ein ähnliches Problem. Ich bin mir nicht sicher, ob es verwandt ist, aber ich werde es trotzdem erklären.
Ich hatte zwei Anzeigen auf meiner Seite und wollte den Code "umgestalten", indem ich dieses Skript nur einmal am Ende der Seite aufrief:
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
Meine Anzeigen sind kaputt gegangen und ich habe herausgefunden, dass dieses Skript-Tag direkt nach jedem var-Skript der Anzeige platziert werden muss:
<script type="text/javascript"><!-- google_ad_client = "ca-pub-872346872364872364"; google_ad_slot = "719238712983"; google_ad_width = 728; google_ad_height = 90; //--> </script>
Aber als ich meine Änderungen rückgängig gemacht hatte, wurde das erste Skript-Tag immer noch am Ende meiner Seite platziert und versuchte so, ein anderes meiner Skript-Tags als Anzeige zu laden. Dies ist fehlgeschlagen und ich habe diesen Fehler erhalten, den Sie gesehen haben.
Überprüfen Sie daher, ob Sie die beiden Anzeigenskript-Tags nacheinander und an keinem anderen Ort behalten, z.
<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>
quelle
Durch einfaches Verschieben
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
des oberen Randes der Seite über den Anzeigen anstelle von unten wurde dies für mich behobenquelle
Auf der Registerkarte "Websites" in Ihrem Google Adsense-Dashboard (Web- oder App-Version). Stellen Sie sicher, dass Ihre Site mit your-domain.com (oder einem beliebigen tld) als Domain und www.your-domain.com als Subdomain eingerichtet ist.
quelle