Facebookのファンページ内のiframeとしてサーバーからロードされるFacebookアプリがあります。Facebook認証を処理するためにjavascript sdkを使用します。
http経由で IE のファンページにアクセスすると、コンソールに次の https セキュリティ エラーが表示されます。
これにより、ユーザーに「安全でないコンテンツ」の警告が表示されます。IE がクロスドメイン iframe の読み込みを処理する方法に関係していることを理解しています。
詳細:
- FB.init が呼び出されたときに発生します (FB.init が呼び出されたときに fb sdk によって xd_arbiter.php が要求されます)。
- IE (具体的には IE 9) でのみ発生します。Chrome または FF にセキュリティ警告はありません。
- Facebook が https ではなく http を介してロードされた場合にのみ発生します。私はそれが逆だと思っていたでしょう...ファンページがhttp経由でロードされていても、Facebookはhttps経由で何かをロードしているに違いありません。
私が試したこと:
- init を呼び出す前に FB._https = true を設定します。(機能しません、非推奨)
- SDK が https (channel.html 内) を介してロードされていることを確認します。
- サーバーに対するすべてのリクエストが https 経由であることを確認しました。
これがinitへの私の呼び出しです:
FB.init({
appId : '{$appid}',
status : true,
cookie : false,
xfbml : true,
oauth : true,
channelUrl : '//my_url.com/channel.html'
});
そして channel.html の内容:
<script src="//connect.facebook.net/en_US/all.js"></script>
では、sdk に https 経由で xd_arbiter.php を強制的にロードさせて、警告が消えるようにするにはどうすればよいでしょうか?
SDK が常に進化していることは理解していますが、まず、何か間違ったことをしていないことを確認したいと思います。
ありがとう