web-dev-qa-db-ja.com

Facebook:安全でないJavaScriptの問題(document.domainの値は同じである必要があります)

私のものは、キャンバスに基づいたFBアプリです。 ChromeとFirefox、(通常はChrome)の両方で問題に直面しています:

1.新しいシークレットモードで承認済みのfbアプリのセキュアURLにアクセスすると、Chromeウィンドウ( https://apps.facebook.com/myfbappnamespace/ )、以下エラーは初めて発生し、ページを更新するとエラーがなくなります(ほとんどの場合)

About:blankのページには、 http://static.ak.facebook.com/connect/xd_arbiter.php?version=18#cb=f2e4fe7b …os.com%2Ff4aeadb2&domain = wwwからの安全でないコンテンツが表示されました.mydomain.com&relation = parent&error = unknown_user。

安全でないJavaScriptがURLのあるフレームにアクセスしようとしています http://www.mydomain.com/control/myfacebookapp/ URLのあるフレームから http://static.ak.facebook.com/connect /xd_arbiter.php?version=18#cb=f2e4fe7b …os.com%2Ff4aeadb2&domain=www.mydomain.com&relation=parent&error=unknown_user。アクセスを要求するフレームは「document.domain」を「facebook.com」に設定しましたが、アクセスされているフレームはそうではありませんでした。アクセスを許可するには、両方で 'document.domain'を同じ値に設定する必要があります。
xd_arbiter.php:18

安全でないJavaScriptがURLのあるフレームにアクセスしようとしています http://www.mydomain.com/control/myfacebookapp/ URLのあるフレームから http://static.ak.facebook.com/connect /xd_arbiter.php?version=18#cb=f2e4fe7b …os.com%2Ff4aeadb2&domain=www.mydomain.com&relation=parent&error=unknown_user。アクセスを要求するフレームは「document.domain」を「facebook.com」に設定しましたが、アクセスされているフレームはそうではありませんでした。アクセスを許可するには、両方で 'document.domain'を同じ値に設定する必要があります。 xd_arbiter.php:18

2. http url( http://apps.facebook.com/myfbappnamespace/ )を試すと、コンソールに表示されるエラーは次のとおりです。

安全でないJavaScriptがURLのフレームにアクセスしようとしています http://apps.facebook.com/myfbappnamespace/ URLのフレームから https://s-static.ak.facebook.com/connect /xd_arbiter.php?version=18#channel= …Fcontrol%2Ffacebookappchannelurl%3Ffb_xd_fragment%23xd_sig%3Df23e84e85c%26。アクセスを要求するフレームのプロトコルは「https」、アクセスされるフレームのプロトコルは「http」です。プロトコルは一致する必要があります。

これらのエラーで何が起こるかを確認するためにfbアカウントにログインすると、今度はたまにしか消えません。私はクエリで「ほとんどの場合」と「時々」を使用していることを知っていますが、まさにそれが私に起こっています。また、フォーラムを検索し、fbがchrome固有であるはずのこの古い問題をすでに修正していることを認識しています。FB.initおよび他の呼び出しがlocation.protocol値固有であることを確認しましたまた、キャンバスURL(http)およびセキュアキャンバスURL(https)で正しい値を構成し、アカウント設定->セキュリティ->セキュアブラウジング->(有効および無効)の両方の設定も試しました。

どこかに何かが足りない場合、誰かが助けてくれますか?

24
Bhavesh Agarwal

考えられる多くの問題があります。次の解決策のいずれかを試してください。

  • プロトコルは同じである必要があるため(iframeへのアクセスを試みるページはiframeを配信するサイトのプロトコルと同じである必要があります)、サンドボックスモード(httpsではなくhttp)でアプリをテストする場合は、「Secureテストアカウントのブラウジングモード
  • FB.init()のc​​hannelUrl(以下のコードを参照)
  • apacheのヘッダーmodを有効にし、.htaccessに以下の行を追加します
  • ここでfb docで説明されているように、bodyタグの後に<div id="fb-root"></div>を追加します。 https://developers.facebook.com/docs/reference/javascript/
  • ユーザーアクション(ログインボタンのクリックなど)の後にすべての自動ログインコードを配置するようにします。
  • http://yoursite.com?などのCanvas URLから末尾のスラッシュを削除します(アプリ→設定)。
  • <html>タグを次のように編集します:<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="https://www.facebook.com/2008/fbml">

。htaccessのコード

<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
</IfModule>

channels問題のコード:

FB.init({
    appId: '1234567890',
    status: true,
    cookie: true,
    xfbml: true,
    channelUrl : '//yoursite.com/channel.html'
});

サーバーから配信されるchannel.htmlには、次の1行が含まれている必要があります。

<script src="//connect.facebook.net/en_US/all.js"></script>

[〜#〜] edit [〜#〜]

最初の問題について:

The page at about:blank displayed insecure content from http://static.ak.facebook.com/connect/xd_arbiter.php?version=18#cb=f2e4fe7b…os.com%2Ff4aeadb2&domain=www.mydomain.com&relation=parent&error=unknown_user.

これは、条件のテストに使用される予期される例外です。これには副作用がないため、気にしないでください。

この質問を参照してください: RLを使用してフレームにアクセスしようとする安全でないJavaScript:ドメイン、プロトコル、およびポートは一致する必要があります。

23

私の場合、「_ Layout」ビューに「facebook-like-box」があり、そのためにCSSをカスタマイズする必要がありました。 global.css ファイル。

。fb_iframe_widget、.fb_iframe_widget span、.fb_iframe_widget span iframe [style] {
 width:100%!important; 
} 

次に、Facebookの共有ボタンがあるArticles and Newsなどの内部ページをロードしようとすると、次のエラーが表示されます。

 Uncaught SecurityError: 'HTMLIFrameElement'から 'contentDocument'プロパティの読み取りに失敗しました:Origin "http:// localhost:51826"のフレームがOrigin "http://static.ak。"のフレームにアクセスすることをブロックしました。 facebook.com」。アクセスされるフレームは「document.domain」を「facebook.com」に設定しましたが、アクセスを要求するフレームはそうではありませんでした。アクセスを許可するには、両方とも「document.domain」を同じ値に設定する必要があります。

どういうわけか、CSSコードの行が(グローバルスコープにいることにより)この問題を引き起こし、共有ボタンのiframeの動作にアクセスして変更しようとしたと思います。

  1. CSSコードのその行を削除することで問題は解決しました。
  2. <style>タグ内に「facebook-like-box」を含む特定のページにCSSコードの行を移動します。
0
user3516584