2014-02-06 3 views
2

Я пытаюсь внедрить 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" 
    + "&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.) И это именно то, что инструкции Google говорят, что делать. Который, вы знаете, действительно смущает ....

ответ

0

Это контролируется параметром url parentUrl для атрибута iframe src.

Это может быть хром-консоль, кодирующая его, но похоже, что URL-адрес для iframe src имеет символы '&', закодированные.

Вы жестко кодируете атрибут parentUrl? или вы используете «encodeURIComponent (window.location.href)»
(из справки документы: https://support.google.com/groups/answer/1191206?hl=en)

+0

Я действительно с помощью encodeURIComponent, как описано в помощи Документов Google. Я понимаю, что значения атрибутов HTML должны быть закодированы (например, как описано в http://stackoverflow.com/a/3705601/743730), поэтому '&' это то, что я ожидаю увидеть. Это неправильно? – mhucka

+0

Похоже, что 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

+0

[предыдущая дискуссия] (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

 Смежные вопросы

  • Нет связанных вопросов^_^