Как показать google.com В iframe?
Я пытаюсь поставить google.com В iframe на моем сайте это работает со многими другими сайтами, включая yahoo. Но он не работает с google, так как он просто показывает пустой iframe. Почему он не рендерит? Есть ли какие хитрости для этого?
Я пробовал это обычным способом, чтобы показать сайт в iframe, как это:
<iframe name="I1" id="if1" width="100%"
height="254" style="visibility:visible"
src="http://www.google.com"></iframe>
google.com страница не отображается в iframe, она просто пуста. Что происходит?
7 ответов:
причина этого в том, что Google отправляет заголовок ответа "X-Frame-Options: SAMEORIGIN". Этот параметр запрещает браузеру отображать iFrames, которые не размещены в том же домене, что и родительская страница.
посмотреть: Mozilla Developer Network-заголовок ответа X-Frame-Options
ЭТО НЕ НЕВОЗМОЖНО.
Используйте обратный прокси-сервер для обработки проблемы различного происхождения. Раньше я использовал Nginx сproxy_passчтобы изменить url страницы. ты можешь попробовать.другой способ-написать простую прокси-страницу, запущенную на сервере самостоятельно, просто запросите у Google и выведите результат клиенту.
Как было указано здесь, поскольку Google отправляет заголовок ответа "X-Frame-Options: SAMEORIGIN", вы не можете просто установить src в "http://www.google.com " в iframe.
Если вы хотите встроить Google в iframe, вы можете сделать то, что sudopeople предложил в комментарии выше, и использовать ссылку на пользовательский поиск Google, как показано ниже. Это отлично сработало для меня (слева' q= ' пустой, чтобы начать с пустого поиск.)
<iframe id="if1" width="100%" height="254" style="visibility:visible" src="http://www.google.com/custom?q=&btnG=Search"></iframe>EDIT:
этот ответ больше не работает. Для получения информации и инструкций о том, как заменить поиск iframe элементом пользовательского поиска google, проверьте: https://support.google.com/customsearch/answer/2641279
Вы можете обойти X-Frame-Options в использовании YQL.
var iframe = document.getElementsByTagName('iframe')[0]; var url = iframe.src; var getData = function (data) { if (data && data.query && data.query.results && data.query.results.resources && data.query.results.resources.content && data.query.results.resources.status == 200) loadHTML(data.query.results.resources.content); else if (data && data.error && data.error.description) loadHTML(data.error.description); else loadHTML('Error: Cannot load ' + url); }; var loadURL = function (src) { url = src; var script = document.createElement('script'); script.src = 'http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20data.headers%20where%20url%3D%22' + encodeURIComponent(url) + '%22&format=json&diagnostics=true&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=getData'; document.body.appendChild(script); }; var loadHTML = function (html) { iframe.src = 'about:blank'; iframe.contentWindow.document.open(); iframe.contentWindow.document.write(html.replace(/<head>/i, '<head><base href="' + url + '"><scr' + 'ipt>document.addEventListener("click", function(e) { if(e.target && e.target.nodeName == "A") { e.preventDefault(); parent.loadURL(e.target.href); } });</scr' + 'ipt>')); iframe.contentWindow.document.close(); } loadURL(iframe.src);<iframe src="http://www.google.co.in" width="500" height="300"></iframe>запустить его здесь.
код :как я могу обойти X-Frame-Options: SAMEORIGIN http Header?
Это не идеально, но вы можете использовать прокси-сервер, и он отлично работает. Например перейти к hidemyass.com положить в www.google.com и поместите ссылку, к которой она идет, в iframe, и она работает!
это раньше работало, потому что я использовал его для создания пользовательских поисков Google с моими собственными параметрами. Google внес изменения на их конце и сломал мою личную страницу настраиваемого поиска :( больше не работает пример ниже. Это было очень полезно для сложных шаблонов поиска.
<form method="get" action="http://www.google.com/search" target="main"><input name="q" value="" type="hidden"> <input name="q" size="40" maxlength="2000" value="" type="text">web
Я думаю, что лучший вариант-просто использовать Curl или аналогичный.
вы можете решить с помощью Google CSE (пользовательский поисковый движок), который можно легко вставить в iframe. Вы можете создать свою собственную поисковую систему, которая ищет выбранные сайты или также во всей базе данных Google.
результаты могут быть оформлены, как вы предпочитаете, также похож на стиль Google. Google CSE работает с веб-поиском и поиском изображений.
google.php
<script> (function() { var cx = 'xxxxxxxxxxxxxxxxxxxxxx'; var gcse = document.createElement('script'); gcse.type = 'text/javascript'; gcse.async = true; gcse.src = 'https://cse.google.com/cse.js?cx=' + cx; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(gcse, s); })(); </script> <gcse:searchresults-only></gcse:searchresults-only>yourpage.php
<iframe src="google.php?q=<?php echo urlencode('your query'); ?>"></iframe>
Comments