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
&domain=mydomain.org&showtabs=false&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-FROM
Chrome と 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.com
mydomain.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"
+ "&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
. それは、あなたが知っている、本当に恥ずかしいです....