Ошибки 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
- это'postMessage'
!The
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-heavy, мы получили междоменную ошибку. Когда мы реализовали их асинхронный код, и в сочетании с правильно определенными междоменные.xml в междоменная ошибка ушла.
Это похоже на случай сообщения об ошибке, маскирующего реальную причину. Настоящая причина, вероятно, является какой-то неправильной конфигурацией Adsense; к сожалению, Adsense, похоже, не делает достаточных проверок, чтобы дать более релевантное сообщение об ошибке.
У меня была эта ошибка, и я пришел к этому выводу после изучения форумов, где некоторые люди сообщили, что это было исправлено после проверки их банковского счета или чего-то еще. В моем случае, моя серверная среда возилась с параметр google_ad_client, поэтому реальная проблема заключалась в том, что этот параметр был равен нулю. Как только я это исправил, показывались объявления и больше не было сообщения об ошибке.
Так что на практике это действительно не имеет ничего общего с политикой того же происхождения. Теперь, когда код 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>