79

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 を変更しました)

4

9 に答える 9

81

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 だけが、それについてコンソール ログに実際のウインジをドロップしているようです。

なぜこれを行っているのかまったくわかりません。なぜそれ'*'がターゲットオリジンとして使用されていないのか気にしないでください...難読化されたスクリプトを調べて調べる気はありません。ただし、このエラーによってページの読み込みが遅くなることはありません。一時停止が見られる場合は、通常、他の外部スクリプトを解決してフェッチしています。

于 2010-03-30T00:36:01.197 に答える
15

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

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

うまくいけば、この壊れた機能が広告からお金を稼ぐ能力に影響を与えないでしょう。

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

于 2010-04-20T02:07:22.103 に答える
8

お使いのブラウザが他の Web サイトからの CSRF 攻撃を防いでいるため、これは正常な動作です。

Web サイトへのアクセスを許可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/

于 2013-08-17T07:47:22.973 に答える
4

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

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

于 2012-10-22T13:43:19.627 に答える
4

ドメインとプロトコルのエラー コードを検索してこのページにたどり着いた場合:

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

于 2013-10-09T14:18:59.673 に答える
1

同様の問題が発生しました。関係あるかわかりませんが一応説明します。

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

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

広告が壊れてしまい、このスクリプト タグを各広告の var スクリプトの直後に配置する必要があることがわかりました。

<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>
于 2013-02-16T15:24:37.800 に答える
1

<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>広告の下ではなく、上のページの上部に移動するだけで、これが修正されました

于 2016-09-03T17:56:41.283 に答える
1

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

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

したがって、実際には、同一生成元ポリシーとはまったく関係ありません。アドセンス コードが正しくなったので、サーバーだけでなくローカルホストでも広告を表示できるようになりました。

于 2011-08-17T23:38:45.920 に答える