Я пытаюсь внедрить Google Group в веб-страницу на сайте, но я не могу заставить ее работать во всех браузерах и не понимаю, почему. Используя код и JavaScript, предоставленный системой конфигурации групп Google, все работает, когда я просматриваю страницу в Safari (версия 6.1, 8537.71) и Chrome (32.0.1700.107), но не FireFox (26.0), работающий на Mac OS X 10.8.5. Запуск отладки консоли Фирефокса показывает следующее сообщение об ошибке:Является ли моя встроенная группа Google заблокирована FireFox из-за неправильного значения «Разрешить-От» X-Frame-Options?
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
, что, насколько я могу судить, не должно быть так ,
Может ли кто-нибудь подумать о том, что может произойти, или предложить какие еще возможные проблемы я могу проверить?
EDIT 2014-02-06 # 1
Я теперь определил, что Chrome и Safari не реализуют поддержку ALLOW-FROM
в X-Frame-Options
; что объясняет сообщения в консолях и, вероятно, объясняет, почему эти браузеры не блокируют встраивание страницы Google Groups. Кроме того, если я правильно интерпретирую определение ALLOW-FROM
, URI, предоставленный как значение , должен быть - прилагаемая страница; другими словами, Google должен отправлять обратно ALLOW-FROM mydomain.org
и не значение, которое оно в настоящее время отправляет. Думаю, я должен что-то делать неправильно, но я следовал точно Google's instructions for setting up the iframe, включая часть о поставке &domain=yourdomain.com
.
EDIT 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
, заключается в том, что мой код был неправильным.По причинам, которые я уже не может реконструировать в это время, я привел верить, что амперсанды в значении 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
.) И это именно то, что инструкции Google говорят, что делать. Который, вы знаете, действительно смущает ....
Я действительно с помощью encodeURIComponent, как описано в помощи Документов Google. Я понимаю, что значения атрибутов HTML должны быть закодированы (например, как описано в http://stackoverflow.com/a/3705601/743730), поэтому '&' это то, что я ожидаю увидеть. Это неправильно? – mhucka
Похоже, что Safari не реализует поддержку 'ALLOW-FROM' в' X-Frame-Options', что объясняет сообщение об ошибке, которое я вижу в консоли. [Эта страница] (https://www.owasp.org/index.php/Clickjacking_Defense_Cheat_Sheet) содержит таблицу, в которой говорится, что Safari не реализует 'ALLOW-FROM' и [эту страницу] (https: //bugs.webkit .org/show_bug.cgi? id = 94836) - это обсуждение в списке разработчиков WebKit менее года назад, что подразумевает, что авторы не хотят реализовывать поддержку «ALLOW-FROM» в ее нынешнем виде. – mhucka
[предыдущая дискуссия] (http://stackoverflow.com/q/10658435/743730) на SO подтверждает, что ни Safari, ни Chrome не поддерживают 'ALLOW-FROM'. [Таблица здесь] (https://developer.mozilla.org/en-US/docs/HTTP/X-Frame-Options?redirectlocale=en-US&redirectslug=The_X-FRAME-OPTIONS_response_header) подтверждает это и показывает совместимость другого браузера , – mhucka