Параметры Google CSE X-frame

Я пытаюсь создать пользовательский поиск для веб-сайта. В настоящее время я работаю веб-разработчиком, поддерживая несколько сайтов. Недавно мое внимание привлекла проблема, связанная с тем, что на странице поиска не генерировались результаты должным образом. Я изучил его и обнаружил, что человек, который первоначально создал сайт, скопировал его с существующего сайта, поэтому строка поиска Google (в документах Google она называется cx) указывала на неправильный (старый сайт). Поэтому я пошел в Google и создал новую систему пользовательского поиска и просто заменил старое значение cx. Весь код такой же, кроме этого. Я использую JavaScript, предоставленный вам Google, а не API напрямую. JavaScript генерирует iframe в заранее определенном div и встраивает результаты поиска в указанный iframe. Проблема в том, что Google отправляет ответ X-frame-options того же происхождения. Я проверил другие сайты, и единственная разница, которая есть на этих сайтах, это перемешивание CX. Все их функции поиска работают просто отлично. Как это исправить, чтобы ответ был другим?

Код, предоставленный Google:

<script>
(function() {
var cx = '011369833985782852522:6v8rougwxxa';
var gcse = document.createElement('script');
gcse.type = 'text/javascript';
gcse.async = true;
gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') +
    '//www.google.com/cse/cse.js?cx=' + cx;
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(gcse, s);
})();


person rady    schedule 28.10.2014    source источник
comment
в чем проблема?   -  person Sharky    schedule 28.10.2014
comment
Ответ @Sharky XframeOrigins имеет то же происхождение. предотвращение отображения результатов с помощью iframe, который генерирует Javascript, который они предоставляют   -  person rady    schedule 28.10.2014
comment
просто точно следуйте инструкциям на странице создания поисковой системы Google. в противном случае подробно опишите, какую настройку вы пытаетесь выполнить.   -  person Sharky    schedule 29.10.2014
comment
читая ваш ответ и ваш комментарий, кажется, вы говорите, что система пользовательского поиска Google ни для кого не работает из-за xframeorigins. пожалуйста, опишите, что вы делаете иначе, чем сказано в инструкциях, что делает xframeorigins проблематичным   -  person Sharky    schedule 29.10.2014
comment
Я не делаю ничего другого.   -  person rady    schedule 29.10.2014


Ответы (2)


Google CSE больше не поддерживает отображение результатов в IFRAME (см. https://support.google.com/customsearch/answer/2641279?hl=en).

Вам придется переключиться на элементы пользовательского поиска (https://developers.google.com/custom-search/docs/js/cselement-devguide).

person flaviovs    schedule 09.07.2015

У меня точно такая же проблема, я не смог найти решение, которое сработало для меня, так как я использую веб-сайт joomla, и у меня нет особого контроля над кодами.

Я нашел два возможных решения, посмотрите, может ли одно из них вам помочь:

  1. Вы можете попробовать добавить &output=embed в конце адреса в src вашего iframe, например:

iframe src="http://xxxxxxxxxxxxsxxxxx&output=embed"

  1. Вы можете попробовать отредактировать файл .htaccess, чтобы добавить заголовок, разрешающий URL-адреса из Google (см. примеры здесь: https://developer.mozilla.org/en-US/docs/Web/HTTP/X).-Frame-Options) или этот:

Заголовок всегда сбрасывает X-Frame-Options

В конце я просто создал собственный модуль и добавил код, предоставленный Google для моего веб-сайта, в http://www.google.com/cse

Я не могу быть уверен, что один из них действительно сработает, поскольку я не смог его протестировать, но я хотел хотя бы поделиться тем, что смог найти в своих исследованиях, возможно, это поможет вам.

Удачи!

person Ana Tafarello    schedule 11.03.2015