Errores de Javascript de Google Adsense

79

En varios de mis sitios que ejecutan adsense, he recibido los siguientes errores:

No se puede publicar el mensaje en [ http: //] googleads.g.doubleclick.net . El destinatario tiene origen http://www.anekdotz.com .

Intento de JavaScript no seguro para acceder al marco con la URL [ http: //] www.anekdotz.com/ desde el marco con la 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 y dt = 1269901036429 y correlador = 1269901036438 y frm = 0 & ga_vid = 711,000,587.1269901037 y ga_sid = 1269901037 y ga_hid = 654061172 y ga_fc = 0 & u_tz = -240 y u_his = 2 & u_java = 1 & u_h = 900 y 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% 3Aotz // www.anek . Deben coincidir los dominios, protocolos y puertos.

(desde la consola de JavaScript de Chrome)

Los anuncios parecen mostrarse correctamente y no afectan a mi código javascript nativo. Sin embargo, a veces estos errores parecen ralentizar la carga de la página. ¿Como puedo solucionar este problema?

(Modifiqué las URL para permitirme publicar esto porque soy un usuario nuevo)

Arjun
fuente
¿Es anekdotz.com su sitio web?
Pekka
1
El mismo problema aqui. ¡Esta publicación es de hace casi un año! Si es un problema de Google, ¿cómo es que no está solucionado? También está matando a otros js en el sitio. De acuerdo con esto, parece estar relacionado con la clasificación de anuncios de solamente .. google.com/support/forum/p/AdSense/...
UpTheCreek
Envíe el problema a Google Adsense ....
Incógnito
@ user257493: hay muchos ejemplos de personas con el mismo problema en los grupos de adsense / páginas de soporte, y no he visto a nadie con una solución. Presentaré el problema al final, pero sé que lleva una eternidad.
UpTheCreek
3
Lo mismo con los iframes de Google Maps, sí, Google puede romper las reglas. espero que no arruine el ranking de SEO ;-)
Jacob Lowe

Respuestas:

81

Google ha estropeado su guión. No hay mucho que puedas hacer al respecto.

Por alguna razón http://pagead2.googlesyndication.net/pagead/expansion_embed.js, incluido en la página principal por las secuencias de comandos de AdSense, está tratando de enviar información sobre el anuncio en un recién <iframe>creado creado para contener el anuncio, utilizando la nueva función postMessage HTML5 :

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

Si. Un buen código minificado / ofuscado allí. Créame, Paes 'postMessage'!

El targetOriginargumento de esta llamada this.lase establece en http://googleads.g.doubleclick.net. Sin embargo, el nuevo iframe se escribió con su srcconfiguración en about:blank. Esto no coincide con el origen de destino, por lo que el navegador debe negarse a enviar el mensaje. Sin embargo, solo Chrome parece estar lanzando un quejido real al registro de la consola al respecto.

No tengo idea de por qué está haciendo esto, no importa por qué no se usa solo '*'como un origen de destino ... Realmente no tengo ganas de entrar en el guión ofuscado para averiguarlo. Sin embargo, este error no debería ralentizar la carga de la página. Si ve pausas, generalmente se está resolviendo y obteniendo otros scripts externos.

bobince
fuente
Hola, gracias por el aviso. Sí, no estoy seguro de si realmente está ralentizando la página, pero muestra la notificación de "página de carga" de los navegadores en la parte inferior mientras la página aparece cargada. Esto es molesto y también puede molestar a algunos usuarios que piensan que deberían esperar hasta que su navegador se cierre. Espero que hagan algo al respecto pronto.
Arjun
4
También tengo este error, no particularmente ninguna lentitud, pero me doy cuenta de que está haciendo que otros JS dejen de funcionar, como la integración de aplicaciones sociales de Facebook. Me pregunto cómo es que esto aún no se ha solucionado.
Mescalito
Puedo agregar: esto solo me sucede en una sesión específica de Chrome donde tengo un bloqueador de anuncios instalado. Inhabilité el complemento para URL particulares, pero aún se activa el mensaje de error de origen. Si abre el mismo sitio en una ventana de incógnito, el problema desaparece.
Andres SK
¿Esta respuesta sigue siendo válida en 2018?
InTheNameOfScience
15

Google está tratando de explotar una peculiaridad del navegador mediante la cual algunos navegadores ignoran la política del mismo origen para Windows con about: blank como URL, lo que permite que esa ventana envíe XMLHttpRequest o, en este caso, solicitudes de postMessage a cualquier sitio.

Hasta donde yo sé, los navegadores han desactivado este comportamiento recientemente. Debe tener uno de esos navegadores parcheados.

Con suerte, esta funcionalidad rota no afectará su capacidad para ganar dinero con los anuncios.

Es molesto para su sitio generar errores de Javascript sin culpa suya, pero es una posibilidad que debe aceptar cuando ejecuta el Javascript de otra persona en su página.

thomasrutter
fuente
"permitir que esa ventana envíe ... solicitudes postMessage a cualquier sitio" ¿Cómo es eso un exploit? postMessagese puede llamar en cualquier vista sin tener que tener en cuenta las mismas restricciones de origen.
Eli Gray
1
Puede ser llame así, seguro. Pero si el mensaje en sí se envía depende de si la ventana de destino, en el momento en que se recibe el mensaje, tiene el origen descrito por el segundo argumento a postMessage. Parece que ese no es el caso aquí. (En cuanto a por qué podría ser un exploit, citando de MDC: "Si se usara postMessage para transmitir una contraseña, sería absolutamente crítico que este argumento sea un URI cuyo origen sea el mismo que el receptor previsto del mensaje que contiene la contraseña , para evitar la interceptación de la contraseña por parte de un tercero malintencionado. ")
Jeff Walden
7

Es normal porque su navegador evita los ataques CSRF de otros sitios web.

Para permitir el googleads...acceso a su sitio web y solucionar este problema, cree un archivo con el nombre crossdomain.xmlen su webroot y llénelo con el siguiente contenido:

<?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>

Para probarlo, vaya a su dominio http://your-domain.com/crossdomain.xml y asegúrese de que no haya errores para esa página. También permitió utilizar comodines, etc. (consulte la referencia). Cuando haya terminado, actualice su página. Espero que ayude.

Ejemplo en vivo: http://www.blanjamudah.com/crossdomain.xml

Referencia: 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
fuente
1
Esto no funcionó para mí, podría ser relevante para Flash Player.
fmalina
4

Para aquellos que llegan a esta página después de buscar el código de error de dominio y protocolo:

AdSense ha lanzado una nueva versión asíncrona de su javascript que soluciona los errores entre dominios que se generan cuando usamos su código de inserción anterior. Cuando usamos su código de inserción estándar en nuestro sitio con mucho AJAX, obtuvimos el error de dominio cruzado. Cuando implementamos su código asíncrono, y en combinación con un crossdomain.xml correctamente definido, el error entre dominios desapareció.

jfrprr
fuente
1

Este parece ser un caso de mensaje de error que enmascara la causa real. La verdadera causa es probablemente algún tipo de configuración incorrecta de Adsense; desafortunadamente, Adsense no parece hacer suficientes comprobaciones para dar un mensaje de error más relevante.

Yo mismo tuve este error y llegué a esta conclusión después de investigar los foros, donde algunas personas informaron que se solucionó después de verificar su cuenta bancaria o lo que sea. En mi caso, mi entorno del lado del servidor estaba jugando con el parámetro google_ad_client, por lo que el problema real era que ese parámetro era nulo. Una vez que lo arreglé, aparecían anuncios y no había más mensajes de error.

Entonces, en la práctica, no tiene nada que ver con la política del mismo origen. Ahora que el código de adsense es correcto, incluso ahora puedo mostrar anuncios cuando se ejecutan en localhost, así como en el servidor.

mahemoff
fuente
1

Acabo de tener un problema similar. No estoy seguro si está relacionado, pero lo explicaré de todos modos.

Tenía dos anuncios que se mostraban en mi página y quería "refactorizar" el código llamando a este script una sola vez al final de la página:

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

Mis anuncios se rompieron y descubrí que esta etiqueta de secuencia de comandos debe colocarse justo después de cada secuencia de comandos de anuncios var:

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

Pero cuando revertí mis cambios, la primera etiqueta de secuencia de comandos todavía estaba colocada en la parte inferior de mi página y, por lo tanto, intentaba cargar otra de mis etiquetas de secuencia de comandos como anuncio. Esto falló y recibí el error que vio.

Por lo tanto, verifique que mantenga las dos etiquetas de secuencia de comandos de anuncios una tras otra y en ningún otro lugar, por ejemplo:

<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>
Pedro
fuente
1

Simplemente moviéndome <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>a la parte superior de la página arriba de los anuncios, en lugar de debajo, solucionó esto para mí.

Vinnie James
fuente
0

En la pestaña Sitios en su panel de Google Adsense (versión web o aplicación). Asegúrese de que su sitio esté configurado con your-domain.com (o cualquier tld) como dominio y www.your-domain.com como subdominio.

JayChase
fuente