На нескольких моих сайтах, работающих с 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 & ч = 250 & slotname = 9210181593 & W = 300 & флэш = 10.0.42 & URL = HTTP% 3A% 2F% 2Fwww.anekdotz.com% 2F & дт = 1269901036429 & коррелятор = 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 . Домены, протоколы и порты должны совпадать.
(из консоли Chrome javascript)
Кажется, что реклама отображается правильно, и это не влияет на мой собственный код javascript. Однако иногда кажется, что эти ошибки замедляют загрузку страницы. Как я могу исправить эту проблему?
(Я изменил URL-адреса, чтобы я мог опубликовать это, поскольку я новый пользователь)
источник
Ответы:
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'
!targetOrigin
Аргумент в этом вызове,this.la
устанавливается вhttp://googleads.g.doubleclick.net
. Однако новый iframe был написан соsrc
значениемabout:blank
. Это не соответствует целевому источнику, поэтому браузер должен отказаться от отправки сообщения. Только Chrome, похоже, бросает реальную жалобу в журнал консоли по этому поводу.Понятия не имею, почему он вообще это делает, не говоря уже о том, почему он не используется просто
'*'
в качестве целевого источника ... На самом деле мне не хочется лезть в обфусцированный скрипт, чтобы выяснить это. Однако эта ошибка не должна вызывать замедление загрузки страницы. Если вы видите паузы, он обычно разрешает и загружает другие внешние скрипты.источник
Google пытается использовать причуду браузера, при которой некоторые браузеры игнорируют политику одного и того же происхождения для окон с URL-адресом about: blank, позволяя этому окну отправлять XMLHttpRequest или, в данном случае, запросы postMessage на любой сайт.
Насколько мне известно, в последнее время браузеры отключают это поведение. У вас должен быть один такой исправленный браузер.
Надеюсь, эта неработающая функция не повлияет на вашу способность зарабатывать деньги на рекламе.
На вашем сайте раздражает генерирование ошибок Javascript не по вашей вине, но вы должны согласиться с этой возможностью, когда запускаете на своей странице чужой Javascript.
источник
postMessage
может быть вызван из любого представления без учета ограничений по происхождению.postMessage
. Похоже, здесь дело обстоит не так. (Что касается того, почему это может быть эксплойт, цитата из MDC: «Если postMessage использовался для передачи пароля, было бы абсолютно важно, чтобы этот аргумент был URI, источник которого совпадает с предполагаемым получателем сообщения, содержащего пароль. , чтобы предотвратить перехват пароля злонамеренной третьей стороной »)Это нормально, потому что ваш браузер предотвращает атаки CSRF с других веб-сайтов.
Чтобы разрешить
googleads...
доступ к вашему веб-сайту и решить эту проблему, создайте файл с именемcrossdomain.xml
в вашем корневом веб- каталоге и заполните его следующим содержимым:<?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/
источник
Файл crossdomain.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, поэтому настоящая проблема заключалась в том, что этот параметр был нулевым. Как только я исправил это, реклама показывалась и больше никаких сообщений об ошибке.
Так что на практике это не имеет ничего общего с политикой одинакового происхождения. Теперь, когда код AdSense верен, я могу показывать рекламу как на локальном хосте, так и на сервере.
источник
У меня похожая проблема. Не уверен, связано ли это, но все равно объясню.
На моей странице показывались две рекламы, и я хотел «реорганизовать» код, вызывая этот скрипт только один раз в конце страницы:
<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>
Я решил эту проблему, просто переместившись в верхнюю часть страницы над рекламой, а не ниже.источник
На вкладке "Сайты" в панели управления Google AdSense (веб-версия или версия приложения). Убедитесь, что ваш сайт настроен с vash-domen.com (или любым другим tld) в качестве домена и www.your-domain.com в качестве поддомена.
источник