Ошибки Javascript из Google Adsense
на нескольких моих запущенных сайтах adsense я получаю следующие ошибки:
невозможно отправить сообщение в [http://] googleads.g.doubleclick.net. Получатель происхождения http://www.anekdotz.com.
небезопасная попытка доступа к JavaScript рамка с URL [ http://] www.anekdotz.com/ от рамки с 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&correlator=1269901036438&frm=0&ga_vid=711000587.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&bih=806&eid=44901212&fu=0&ifi=1&dtd=153&xpc=Xkfk1oufPQ&p=http%3A//www.anekdotz.com. Домены, протоколы и порты должны совпадать.
(из консоли Chrome javascript)
объявления, кажется, показывают правильно, и это не влияет на мой родной код javascript. Однако иногда эти ошибки, похоже, замедляют загрузку страницы. Как я могу решить эту проблему?
(Я изменил url, чтобы позволить мне опубликовать это, поскольку я новый пользователь)
8 ответов
Google испортили свой скрипт. С этим ничего не поделаешь.
почему-то http://pagead2.googlesyndication.net/pagead/expansion_embed.js
, включенный в родительскую страницу скриптами AdSense, пытается отправить информацию о рекламе во вновь написанное <iframe>
создано для размещения рекламы, используя новый HTML5 postMessage объект:
ha(this, function (f, e) {
d[Pa](this.a[A]+"|"+f+":"+e, this.la)
});
да. Какой-то приятный уменьшенный/запутанный код. Поверь мне, Pa
is 'postMessage'
!
на
Google пытается использовать причуду браузера, в соответствии с которой некоторые браузеры игнорируют политику того же происхождения для windows с about:blank как URL, позволяя этому окну отправлять XMLHttpRequest или, в данном случае, postMessage запросы на любой сайт.
насколько я знаю, браузеры недавно отключили это поведение. У вас должен быть один такой исправленный браузер.
Надеюсь, эта сломанная функциональность не влияет на вашу способность зарабатывать деньги реклама.
для вашего сайта раздражает генерировать ошибки Javascript без вашей собственной вины, но это возможность, которую вы должны принять, когда вы запускаете чужой Javascript на своей странице.
это нормально, потому что ваш браузер предотвращает атаки CSRF с других веб-сайтов.
разрешить googleads...
чтобы получить доступ к вашему сайту и решить эту проблему, создайте файл с именем crossdomain.xml
в вашем webroot и заполните его следующим содержимым:
<?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>
чтобы проверить его, перейдите в свой домен http://your-domain.com/crossdomain.xml и убедитесь, что на этой странице нет ошибок. Вы также разрешили использовать подстановочные знаки и т. д. (см. ссылку). Когда вы закончите, обновите страницу. Надеюсь, это поможет.
живой пример: http://www.blanjamudah.com/crossdomain.xml
ссылка: http://en.wikipedia.org/wiki/Cross-site_request_forgery http://curtismorley.com/2007/09/01/flash-flex-tutorial-how-to-create-a-crossdomainxml-file/
в междоменных.xml-файл в корне сайта, предоставляющий доступ к googleads.g.doubleclick.net надо это исправить.
смотрите эту страницу, http://www.warriorforum.com/adsense-ppc-seo-discussion-forum/458906-adsense-blank-space-problem.html
для тех, кто приземляется на этой странице после поиска кода ошибки домена и протокола:
AdSense выпустила новый асинхронные версии их javascript, который обратился к междоменным ошибкам, генерируемым при использовании их более старого кода встраивания. Когда мы использовали их стандартный код встраивания на нашем AJAX-тяжелом сайте, мы получили междоменную ошибку. Когда мы реализовали их асинхронный код, и в сочетании с правильно определенным crossdomain.в XML в междоменная ошибка исчезла.
Это, похоже, случай сообщения об ошибке, маскирующего реальную причину. Реальная причина, вероятно, является какой-то неправильной конфигурацией Adsense; к сожалению, Adsense, похоже, не делает достаточных проверок, чтобы дать более релевантное сообщение об ошибке.
У меня была эта ошибка и я пришел к этому выводу после изучения форумов, где некоторые люди сообщили, что это было исправлено после проверки их банковского счета или что-то еще. В моем случае моя серверная среда возилась с параметр google_ad_client, поэтому реальной проблемой был параметр null. Как только я это исправил, показывались объявления и больше не было сообщений об ошибках.
Так что на практике это действительно не имеет ничего общего с политикой того же происхождения. Теперь, когда код adsense верен, я даже теперь могу показывать рекламу при запуске на localhost, а также на сервере.
только что получил аналогичную проблему. Не уверен, что это связано, но я все равно объясню.
у меня было два объявления, показывая на мою страницу и хотел "рефакторинг" код, называя только один раз этот скрипт в конце страницы:
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
мои объявления сломались, и я понял, что этот тег скрипта должен быть размещен сразу после каждого сценария ads var:
<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"><!--
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>
просто двигаться <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
в верхней части страницы, над рекламой, а не ниже, исправлено это для меня