2

Google グループをサイトのウェブ ページに埋め込もうとしていますが、すべてのブラウザで機能させることができず、その理由がわかりません。Google グループ構成システムによって提供される JavaScript コードを使用する<iframe>と、Safari (バージョン 6.1、8537.71) および Chrome (32.0.1700.107) でページを表示すると機能しますが、Mac OS X 10.8.5 で実行されている FireFox (26.0)では機能しません。 . FireFox のデバッグ コンソールを実行すると、次のエラーが表示されます。

Load denied by X-Frame-Options: https://groups.google.com/ 
does not permit framing by http://mysite.org/mypage

(http://mysite.org/mypageもちろん、実際のページの URL はどこにあります)。ここで興味深いことに、Chrome と Safari でデバッグ コンソールを使用すると、どちらもエラーが報告されますが、それはX-Frame-Optionsグループによって送信されたヘッダーに関するものです。

Invalid 'X-Frame-Options' header encountered when loading
'https://groups.google.com/forum/embed/?place=forum/myforum
&amp;domain=mydomain.org&amp;showtabs=false&amp;parenturl=
http%3A%2F%2Fmydomain.org': 'ALLOW-FROM https://groups.google.com' 
is not a recognized directive. The header will be ignored.

これは、Safari と Chrome で機能する理由は、Google が無効なヘッダーを送信しているため (可能性は低いと思われます)、Safari と Chrome がそれを無視するため、または両方のブラウザーが解釈できないためであることを暗示しているようですX-Frame-Options。 、そうではないはずです。

誰かが何が起こっているのか考えたり、私がチェックできる他の考えられる問題を提案したりできますか?

SOに関する過去の質問は、同様の問題またはおそらく同じ問題に遭遇したようですが、OPの問題は自然に解決したようですが、Googleアカウントにログインしているかどうかにかかわらず、私の問題は解決しません。

編集 2014-02-06 #1

ALLOW-FROMChrome と Safari はin のサポートを実装していないと判断しましたX-Frame-Options。これは、コンソールのメッセージを説明し、おそらくこれらのブラウザが埋め込み Google グループ ページをブロックしない理由を説明しています。また、ALLOW-FROMオプションの定義を正しく解釈すれば、値として提供される URI はそれを囲むページであるはずです。つまり、Googleは現在送信している値ではなく、ALLOW-FROM mydomain.org返送する必要があります。私は何か間違ったことをしているに違いないと思いますが、提供に関する部分を含め、iframe をセットアップするための Google の指示に&domain=yourdomain.com正確に従いました。

編集 2014-02-06 #2

上記の観点から、私の最初の質問は基本的に答えられます: Safari と Chrome が埋め込みページを表示する理由は、現在セキュリティヘッダー値を無視しているためですが、FireFox はそうではなく、値がでALLOW-FROMはないため、埋め込みを正しくブロックします必要に応じて、iframe (mydomain.org) を囲むページのドメイン。

問題は、なぜ Googleがではなくを設定ALLOW-FROMするのかということです。https://groups.google.commydomain.org

編集 2014-02-06 #3

解決しました。Google がX-Frame-Options値を送信していた理由は、私の<iframe>コードが間違っていたからです。現時点では再構成できないため、次のように、src属性値のアンパサンドをエスケープする必要があると考えるようになりました。

<html><body>
<iframe id="forum_embed" src="javascript:void(0)"
  scrolling="no" frameborder="0"  width="746" height="1200">
</iframe>
<script type="text/javascript">
  document.getElementById('forum_embed').src =
     "https://groups.google.com/forum/embed/?place=forum/sbml-discuss"
     + "&amp;parenturl=" + encodeURIComponent(window.location.href);
</script>
</body></html>

実際、そのように記述しても機能しません。しかし、次のようにします。

<html><body>
<iframe id="forum_embed" src="javascript:void(0)"
  scrolling="no" frameborder="0"  width="746" height="1200">
</iframe>
<script type="text/javascript">
  document.getElementById('forum_embed').src =
     "https://groups.google.com/forum/embed/?place=forum/sbml-discuss"
     + "&parenturl=" + encodeURIComponent(window.location.href);
</script>
</body></html>

(違いは&parenturl. それは、あなたが知っている、本当に恥ずかしいです....

4

1 に答える 1