3

私のメインのJavaScript(およびすべての静的コンテンツ)はから含まれていhttps://static.anuary.comます。ユーザーが閲覧しているURLはですhttps://dev.anuary.com/somepath/

チャネルファイルはどこにある必要がありますか、dev.anuary.comまたはstatic.anuary.com?現時点ではhttp://static.anuary.com/channel.htmlです。


私はまだ次のようなエラーが発生しているので、質問しています。

安全でないJavaScriptがURLhttps://www.facebook.com/dialog/oauth?access_token=[..]&api_key=[..]&app_id=[..]&client_id=[..]&display=popup&domain=でフレームにアクセスしようとしましたdev.anuary.com&locale=en_US&origin=1&redirect_uri=http%3A%2F%2Fstatic.ak.facebook.com%2Fconnect%2Fxd_arbiter.php%3Fversion%3D6%23cb%3Df3ac7a0544%26origin%3Dhttp%253A%252F%252Fdev COM%252Ff373e908a8%26domain%3Ddev.anuary.com%26relation%3Dopener%26frame%3Df312def42c&response_type =トークン%2Csigned_request&スコープ=電子メール%2Cuser_birthday%2Cuser_likes%2Cuser_interests%2Cpublish_stream&SDK =ジョーイURLのフレームから http://dev.anuary.com/658fe23c24564ac978c31d167549c4ce8b36686d65a78ad99bfb38765d46e232 /。ドメイン、プロトコル、およびポートは一致する必要があります。


@dtbarneへの応答:

まあ、それは問題です-私は弓の方法を試したので、それが同じエラーを生成する場合に備えて、私はまだわかりません:

安全でないJavaScriptがURLhttps://www.facebook.com/dialog/oauth?access_token=[..]&api_key=[..]&app_id=[..]&client_id=[..]&display=popup&domain=でフレームにアクセスしようとしましたdev.anuary.com&locale=en_US&origin=1&redirect_uri=http%3A%2F%2Fstatic.ak.facebook.com%2Fconnect%2Fxd_arbiter.php%3Fversion%3D6%23cb%3Df1ee31b93%26origin%3Dhttp%253A%252F%252Fdev COM%252Ff9359b2f%26domain%3Ddev.anuary.com%26relation%3Dopener%26frame%3Df18e94f9c4&response_type =トークン%2Csigned_request&スコープ=電子メール%2Cuser_birthday%2Cuser_likes%2Cuser_interests%2Cpublish_stream&SDK =ジョーイURLのフレームから http://dev.anuary.com/658fe23c24564ac978c31d167549c4ce8b36686d65a78ad99bfb38765d46e232 /。ドメイン、プロトコル、およびポートは一致する必要があります。

4

3 に答える 3

1

あなたはすでに答えを知っているようですね。dev.anuary.com にある必要があります。目的は、FB とユーザーがアクセスした URL の間の通信を許可することです。

于 2012-05-17T04:40:49.380 に答える
1

あなたが言ったように、このエラーは致命的ではなく、怪しいことが起こっている可能性があることをユーザーに警告することを意味します。

Facebook は、この問題をBy Designバグ システムとしてマークしました: Bugs > Unsafe JavaScript attempts to access frame with URL...
また、これに関するスタック オーバーフローに関する多くのスレッドがここにあります

この「エラー メッセージ」が避けられないことがわかったので、すべてがうまくいく限り、好きなようにチャネルを使用してください。
ドキュメントに記載されているように、チャネルを使用する必要さえありません。

channelUrl パラメータはオプションですが、推奨されます。チャネル ファイルを提供すると、3 つの特定の既知の問題に対処するのに役立ちます。まず、フレーム間で通信するためのコードを含むページでは、ソーシャル プラグインが channelUrl なしで空白として表示される場合があります。第 2 に、channelUrl が指定されておらず、ページに自動再生オーディオまたはビデオが含まれている場合、クロスドメイン通信のためにページがバックグラウンドで 2 回目に読み込まれるため、ユーザーには 2 つのオーディオ ストリームが聞こえる可能性があります。第 3 に、チャネル ファイルは、サーバー側のログに余分なヒットが含まれるのを防ぎます。channelUrl を指定しない場合は、fb_xd_bust または fb_xd_fragment パラメーターを含むページ ビューをログから削除して、適切なカウントを確保できます。

しかし、次のようにも述べています。

チャネル ファイルは、特定のブラウザーでのクロス ドメイン通信に関するいくつかの問題に対処します。

だから、決めるのはあなた次第です。
個人的には、チャネルを使用して、静的サーバーからではなく、通常のサーバーからファイルを提供することをお勧めします。ただし、 JS SDK ドキュメント ページ
で言及されているように、サーバーがこのファイルに対して多くのリクエストを受け取らないように、出力のキャッシュ有効期限を長く設定する必要があります。

<?php
   $cache_expire = 60*60*24*365;
   header("Pragma: public");
   header("Cache-Control: max-age=".$cache_expire);
   header('Expires: ' . gmdate('D, d M Y H:i:s', time()+$cache_expire) . ' GMT');
?>
<script src="//connect.facebook.net/en_US/all.js"></script>

(php の例ですが、任意の言語で実行できます)。

この回答があなたにとって物事を明確にすることを願っています。

于 2012-05-29T15:24:21.120 に答える
0

チャネルファイルは、サイト間のjavascriptエラーを修正するために使用されるため、ユーザーがアクセスするサーバー/アドレスに配置する必要があります。ユーザーが常にHTTPSを使用してWebサイトにアクセスしている場合は、HTTPSおよびその他のコンテンツを使用してチャネルファイルを参照する必要があります。

チャネルファイル自体はそのままにしておく必要が<script src="//connect.[..]ありますが、すべての静的コンテンツとJSインクルードにhttpsが含まれていることを確認してください。

于 2012-05-28T13:20:52.197 に答える