web-dev-qa-db-ja.com

Google AdsenseからのJavascriptエラー

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 = 1 www.anekdotz.comドメイン、プロトコル、およびポートは一致する必要があります。

(Chrome JavaScriptコンソールから)

広告は適切に表示されるようで、ネイティブJavaScriptコードには影響しません。ただし、これらのエラーによってページの読み込みが遅くなる場合があります。この問題を修正するにはどうすればよいですか?

(私は新しいユーザーとしてこれを投稿できるようにURLを変更しました)

79
Arjun

Googleはスクリプトを台無しにしました。それについてできることはあまりありません。

何らかの理由で、AdSenseスクリプトによって親ページに含まれるhttp://pagead2.googlesyndication.net/pagead/expansion_embed.jsは、新しいHTML5を使用して、広告を保持するために作成された新しく作成された<iframe>に広告に関する情報を送信しようとしています postMessage 機能:

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

うん。いくつかのニースの縮小/難読化されたコードがあります。 Pa'postMessage'です!

この呼び出しのtargetOrigin引数、this.lahttp://googleads.g.doubleclick.netに設定されます。ただし、新しいiframeはsrcabout:blankに設定して作成されました。これはターゲットOriginと一致しないため、ブラウザはメッセージの送信を拒否する必要があります。ただし、Chrome=は、コンソールログに実際のうねりを落としているようです。

なぜこれを行っているのか全くわかりません。ターゲットのOriginとして'*'を使用しているだけではないことを気にしないでください...難読化されたスクリプトを探してわざわざ探しているわけではありません。ただし、このエラーによってページの読み込みが遅くなることはありません。一時停止が発生している場合、通常は他の外部スクリプトを解決して取得しています。

79
bobince

Googleは、ブラウザの癖を利用して、一部のブラウザーがabout:blankをURLとして持つウィンドウの同一起源ポリシーを無視し、そのウィンドウがXMLHttpRequestまたはこの場合はpostMessageリクエストを任意のサイトに送信できるようにします。

私の知る限り、ブラウザは最近この動作を無効にしています。そのようなパッチを適用したブラウザが必要です。

うまくいけば、この壊れた機能が広告からお金を稼ぐ能力に影響しないことを願っています。

あなたのサイトがあなた自身の過失なしにJavascriptエラーを生成するのは面倒ですが、あなたのページで他の誰かのJavascriptを実行するときは受け入れなければならない可能性があります。

14
thomasrutter

ブラウザが他のWebサイトからのCSRF攻撃を防ぐため、これは正常です。

googleads...がWebサイトにアクセスしてこの問題を解決できるようにするには、Webルートに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_forgeryhttp://curtismorley.com/2007/09/01/flash-flex-tutorial-how- to-create-a-crossdomainxml-file /

7
risnandar

ドメインとプロトコルのエラーコードを検索した後、このページにアクセスした場合:

AdSenseは、古い埋め込みコードを使用したときに生成されるクロスドメインエラーに対処した新しいJavaScript async version をリリースしました。 AJAXが重いサイトで標準の埋め込みコードを使用すると、クロスドメインエラーが発生しました。非同期コードを実装し、 適切に定義されたcrossdomain.xmlと組み合わせて クロスドメインエラーがなくなりました。

4
jfrprr

Googleads.g.doubleclick.netへのアクセスを許可するサイトルートのcrossdomain.xmlファイルで修正する必要があります。

このページを参照してください http://www.warriorforum.com/adsense-ppc-seo-discussion-forum/458906-adsense-blank-space-problem.html

4
Chaoley

単に移動<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>ページ上部の広告の上ではなく、下ではなく、私のためにこれを修正

1
Vinnie James

同様の問題が発生しました。それが関連しているかどうかはわかりませんが、とにかく説明します。

ページに2つの広告が表示されていて、ページの最後でこのスクリプトを1回だけ呼び出すことでコードを「リファクタリング」したかったのです。

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

私の広告が壊れたため、このスクリプトタグは各広告変数スクリプトの直後に配置する必要があることがわかりました。

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

しかし、変更を元に戻したとき、最初のスクリプトタグもページの下部に配置されていたため、スクリプトタグの別の1つを広告として読み込もうとしました。これは失敗し、このエラーが表示されました。

したがって、次のように、2つの広告スクリプトタグを互いに続けて配置し、他の場所がないことを確認します。

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

これは、本当の原因を隠しているエラーメッセージの場合のようです。本当の原因は、おそらくある種のAdSenseの誤設定です。残念ながら、Adsenseはより関連性のあるエラーメッセージを表示するのに十分なチェックを行っていないようです。

自分でこのエラーがあり、フォーラムを調査した後、この結論に至りました。一部の人々は、銀行口座などを確認した後、修正されたと報告しました。私の場合、サーバー側の環境はgoogle_ad_clientパラメーターをいじっていたため、実際の問題はそのパラメーターがnullであるということでした。修正すると、広告が表示され、エラーメッセージは表示されなくなりました。

したがって、実際には、同じ起源のポリシーとはまったく関係ありません。 AdSenseのコードが正しくなったので、サーバー上だけでなくローカルホスト上でも実行中に広告を表示できるようになりました。

1
mahemoff

Google Adsenseダッシュボードの[サイト]タブ(Webまたはアプリバージョン)。ドメインがyour-domain.com(またはいずれかのtld)で、サブドメインがwww.your-domain.comに設定されていることを確認してください。

0
JayChase