Iframe में google.com कैसे दिखाएं?


121

मैं अपनी वेबसाइट पर iframe में google.com डालने की कोशिश कर रहा हूं, यह याहू सहित कई अन्य वेबसाइटों के साथ काम करता है। लेकिन यह Google के साथ काम नहीं करता है क्योंकि यह सिर्फ एक खाली आइफ्रेम दिखाता है। यह क्यों प्रस्तुत नहीं करता है? क्या ऐसा करने के लिए कोई चाल है?

मैंने इसे सामान्य रूप से इस तरह से iframe में एक वेबसाइट दिखाने की कोशिश की है:

<iframe name="I1" id="if1" width="100%" 
 height="254" style="visibility:visible" 
 src="http://www.google.com"></iframe>

Google.com पेज iframe में रेंडर नहीं करता है, यह सिर्फ रिक्त है। क्या हो रहा है?


आपको iframe में Google को दिखाने की आवश्यकता क्यों है?
पॉल एलन टेलर

मुझे उद्धृत न करें, लेकिन शायद Google कुछ ऐसा window.propertyया कुछ का उपयोग करता है, जो कि IFrame के अंदर, प्रदर्शन का हिस्सा तोड़ देगा?
वार्षिक तौर

अगर आप Google खोज बार यह लिंक देखना चाहते हैं: google.com/webelements/# !
custom

@PaulAlanTaylor यह मेरे ग्राहक की आवश्यकता थी, यह कहा गया था कि वह अपनी वेबसाइट का Google परिणाम iframe में काम करना चाहते हैं।
बाला

11
बस यह करें:<iframe src="https://www.google.com/webhp?igu=1"></iframe>
niutech

जवाबों:


117

इसका कारण यह है, कि Google एक "X- फ्रेम-विकल्प: SAMEORIGIN" प्रतिक्रिया शीर्ष लेख भेज रहा है। यह विकल्प ब्राउज़र को iFrames प्रदर्शित करने से रोकता है जो मूल डोमेन के समान डोमेन पर होस्ट नहीं किए जाते हैं।

देखें: मोज़िला डेवलपर नेटवर्क - एक्स-फ़्रेम-विकल्प प्रतिक्रिया हेडर


18
मुझे लगता है कि यह बहुत बेकार है। अगर कोई भी उस सुविधा का उपयोग करने के लिए एक कारण के बारे में सोच सकता है, तो इसका मतलब यह है कि मुझे बताने के लिए स्वतंत्र महसूस करें।
वार्षिक

15
@JonHanna कोई भी चीज़ के लिए बस Google से संपर्क नहीं करता है।
अल्बर्ट

23
आप इस URL का उपयोग a iframe: google.com/search?igu=1
niutech

1
या आप मेरे एक्स-फ्रेम-बायपास वेब घटक का उपयोग कर सकते हैं ।
नीटच

4
@niutech अविश्वसनीय रूप से, igu = 1 पैरामीटर के साथ आपका URL काम करता है। कोई विचार क्यों? उस विकल्प के पीछे मूल उद्देश्य क्या है? दिलचस्प बात यह है कि यह मुझे लॉग-इन नहीं करने का कारण बनता है, लेकिन खोज क्षेत्र अभी भी मेरी कुछ वास्तविक ऐतिहासिक खोजों का सुझाव देता है। तो मैं "तरह" में लॉग इन किया। बहुत अजीब है।
मार्क थॉमसन

28

यह असम्भव नहीं है।
अलग-मूल-समस्या को संभालने के लिए एक रिवर्स प्रॉक्सी सर्वर का उपयोग करें। मैं proxy_passपेज के url को बदलने के लिए Nginx का उपयोग करता था । आप एक कोशिश कर सकते हैं।

एक और तरीका यह है कि आप सर्वर पर चलने वाले एक साधारण प्रॉक्सी पेज को लिखें, बस Google से अनुरोध करें और परिणाम को क्लाइंट को आउटपुट करें।


8
Google ने अपने मानक खोज यूआरएल को कर्लिंग करने के मेरे सरल प्रयासों को अवरुद्ध कर दिया। :( मैंने "Google कस्टम" का उपयोग किया, जो अलग-अलग एक्स-फ्रेम-ऑप्शन भेजता है। google.com/custom?q=test&btnG=Search
Joel Mellon

7
वहाँ कैसे Nginx के साथ इस समस्या को हल करने के लिए एक ट्यूटोरियल है?
ब्लैक

21

जैसा कि यहाँ उल्लिखित किया गया है, क्योंकि Google एक "X- फ्रेम-ऑप्शंस: SAMEORIGIN" प्रतिसाद हेडर भेज रहा है जिसे आप केवल iframe में " http://www.google.com " पर सेट नहीं कर सकते हैं ।

यदि आप 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>

संपादित करें:

यह जवाब अब काम नहीं करता है। जानकारी के लिए, और निर्देश पर एक iframe खोज को Google कस्टम खोज तत्व से कैसे बदलें: https://support.google.com/customsearch/answer/2641279


Thx स्कॉटीजीजी! क्या छवियों के परिणामों को जोड़ने के लिए कोई विकल्प है?
क्रिज़िस्तोफ़ प्रेज़ीगोडा

हे Krzysztof Przygoda मुझे लगता है कि आप एक src के साथ एक छवि खोज को मजबूर कर सकते हैं जैसे: http://www.google.com/search?site=imghp&tbm=isch&q='searchstring'लेकिन क्योंकि यह खोज का उपयोग करता है? और कस्टम नहीं? आप इसे iframe में उपयोग नहीं कर पाएंगे
स्कॉटीजी

1
@ ScottyG क्या उपरोक्त तकनीक अभी भी मान्य है? मैंने एक खाली पृष्ठ में उस पंक्ति को छोड़ने की कोशिश की और सभी को मिल रहा है एक रिक्त iframe, यहां तक ​​कि जब मैं एक क्वेरी प्रदान करता हूं
Andres

2
हाय एंड्रेस, लगता है कि आप सही हो सकते हैं। मुझे अब यह मेरे लिए काम करने में सक्षम नहीं है। कस्टम खोज लिंक अब google.ca/webhp?btnG=&gws_rd=ssl पर पुनर्निर्देशित करता है, जो ssl को बल देता है और एक आइफ्रेम में अब अवरुद्ध हो जाता है। मैं इसकी जांच करता रहूंगा लेकिन ऐसा लग रहा है कि पार्टी इस पर खत्म हो सकती है ... :(
स्कॉटीजी

8

YQL का उपयोग करके आप X- फ्रेम-विकल्प को बायपास कर सकते हैं।

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 = 'https://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>

इसे यहां चलाएं: http://jsfiddle.net/2gou4yen/

यहां से कोड: मैं एक्स-फ्रेम-विकल्प को कैसे बाईपास कर सकता हूं: SAMEORIGIN HTTP हेडर?


3
यह पहली बार नहीं बल्कि काम कर रहा है। अगर मैं अपना वेबपेज खोलता हूं, जिसमें मैंने एम्बेड किया है, तो मुझे पहली बार पेज लोड करने के लिए रिफ्रेश हिट करना होगा। उसके बाद अच्छा होगा।
विवेक सिन्हा

@ टीवी-सी -15 यह काम करता है जब आप को बदलने के http://query.yahooapis.comसाथ https://query.yahooapis.com
निउटेच

इस पर जांच की पर codepen [ codepen.io/anon/pen/Xyqqvb] फ़ायरफ़ॉक्स, क्रोम, ओपेरा पर और यह काम करता है (हालांकि कुछ समय ताज़ा करने के लिए आवश्यकता होती है), किनारे पर काम नहीं करता है, लेकिन अगर मैं स्थानीय रूप से कॉपी और मैं ब्राउज़र में खोलने के लिए यह करने के लिए जारी पृष्ठ को फिर से लोड करें..पूरी स्क्रिप्ट: [ files.fm/u/arzrb2h4]
जो

1
काम नहीं कर रहा। क्या आईफ्रेम में गूगल खोलने का कोई और तरीका है?
कृष्णा

3

आप Google CSE (कस्टम Searche Engine) का उपयोग करके हल कर सकते हैं , जिसे आसानी से 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>

2

यह काम करता था क्योंकि मैंने इसका उपयोग अपने विकल्पों के साथ कस्टम 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">

वेब

मुझे लगता है कि बेहतर विकल्प सिर्फ कर्ल या इसी तरह का उपयोग करना है।


1

यह आदर्श नहीं है, लेकिन आप एक प्रॉक्सी सर्वर का उपयोग कर सकते हैं और यह ठीक काम करता है। उदाहरण के लिए hidemyass.com पर जाएं www.google.com में और लिंक को एक आइफ्रेम में जाता है और यह काम करता है!


0

यदि आप PHP का उपयोग कर रहे हैं, तो आप file_get_contents()सामग्री को प्रिंट करने के लिए उपयोग कर सकते हैं :

<?php
$page = file_get_contents('https://www.google.com');
echo $page;
?>

यह file_get_contents()इस url में जो भी कंटेंट फंक्शन मिलेगा उसे प्रिंट करेगा । कृपया ध्यान दें कि चूंकि आप एक वास्तविक वेब पेज के बजाय स्ट्रिंग के रूप में सामग्री प्रदर्शित कर रहे हैं, इसलिए सापेक्ष पथ चित्र जैसी चीजें सही ढंग से नहीं दिखाई जाती हैं, क्योंकि /img/myimg.jpg अब आपके सर्वर से लोड हो रहा है और google.com से अब और नहीं।

हालाँकि, आप कुछ ट्रिक जैसे str_replace()फंक्शन के साथ खेल सकते हैं ताकि छवियों में संपूर्ण यूआरएल को बदल सकें :

<?php
$page = file_get_contents('https://www.google.com');
echo str_replace('src="img/','src="https://google.com/img/',$page);
?>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.