Javascript-Fehler von Google Adsense

79

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.)

Arjun
quelle
Ist anekdotz.com Ihre Website?
Pekka
1
Selbes Problem hier. Dieser Beitrag ist von vor fast einem Jahr! Wenn es ein Google-Problem ist, wie kommt es, dass es nicht behoben ist? Es tötet auch andere js auf der Seite. Nach dieser scheint es nur .. auf Rangliste Anzeigen bezogen werden google.com/support/forum/p/AdSense/...
UpTheCreek
Senden Sie das Problem an Google Adsense ....
Incognito
@ user257493 - Auf den Adsense-Gruppen / Support-Seiten gibt es viele Beispiele für Personen mit demselben Problem, und ich habe niemanden mit einem Fix gesehen. Ich werde das Problem am Ende einreichen, aber ich weiß, dass es ein Alter braucht.
UpTheCreek
3
Das gleiche gilt für Google Maps Iframes. Ja, Google kann gegen Regeln verstoßen. hoffe, es ruiniert nicht das SEO-Ranking ;-)
Jacob Lowe

Antworten:

81

Google hat sein Skript durcheinander gebracht. Sie können nicht viel dagegen tun.

Aus irgendeinem Grund http://pagead2.googlesyndication.net/pagead/expansion_embed.jswird 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, Paist 'postMessage'!

Das targetOriginArgument in diesem Aufruf this.laist auf gesetzt http://googleads.g.doubleclick.net. Der neue Iframe wurde jedoch mit dem srcSet to geschrieben about: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.

Bobince
quelle
Hey, danke für die Hinweise. Ja, ich bin nicht sicher, ob es die Seite tatsächlich verlangsamt, aber es zeigt die Benachrichtigung des Browsers "Seite laden" unten an, während die Seite geladen erscheint. Dies ist ärgerlich und kann auch einige Benutzer stören, die glauben, sie sollten warten, bis ihr Browser heruntergefahren wird. Ich hoffe, dass sie bald etwas dagegen unternehmen.
Arjun
4
Ich habe auch diesen Fehler, nicht besonders Langsamkeit, aber ich stelle fest, dass andere JS nicht mehr funktionieren, wie die Integration von fb Social Apps. Ich frage mich, wie es dazu kommt, dass dies noch nicht behoben wurde.
Mescalito
Darf ich hinzufügen: Dies passiert mir nur in einer bestimmten Chrome-Sitzung, in der ein Werbeblocker installiert ist. Ich habe das Plugin für bestimmte URLs deaktiviert, dennoch wird die Ursprungsfehlermeldung ausgelöst. Wenn Sie dieselbe Site im Inkognito-Fenster öffnen, verschwindet das Problem.
Andres SK
Ist diese Antwort 2018 noch gültig?
InTheNameOfScience
15

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.

thomasrutter
quelle
"Zulassen, dass dieses Fenster ... postMessage-Anfragen an eine beliebige Site sendet" Wie ist das ein Exploit? postMessagekann in jeder Ansicht aufgerufen werden, ohne die gleichen Ursprungsbeschränkungen berücksichtigen zu müssen.
Eli Gray
1
Es sei genannt , dass Art und Weise, sicher. Ob die Nachricht selbst gesendet wird, hängt jedoch davon ab, ob das Zielfenster zum Zeitpunkt des Empfangs der Nachricht den durch das zweite Argument beschriebenen Ursprung hat 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. ")
Jeff Walden
7

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 Namen crossdomain.xmlin 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/

Risnandar
quelle
1
Dies hat bei mir nicht funktioniert, es könnte für Flash Player relevant sein.
Fmalina
4

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 .

jfrprr
quelle
1

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.

Mahemoff
quelle
1

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>
Peter
quelle
1

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 behoben

Vinnie James
quelle
0

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.

JayChase
quelle