2017-05-30 131 views
0

我想通過iFrame嵌入網站。但我有兩個問題:將iFrame從HTTP嵌入到HTTPS並僅嵌入特定部分?

  1. 我有一個HTTPS網站,並希望從HTTP網站嵌入的東西。那麼,我如何確保連接? - 因爲否則,如果我通過HTTPS加載我的網站,我的HTTPS網站就不會顯示iFrame。它通過HTTP工作。但我想要一個安全的連接!

  2. 我想只嵌入網站的某些部分,而不是完全的網站。甚至更容易。我只想嵌入從網站開始直到網站結束的網站。所以,我只想簡化網站的頭部。但這裏是我的問題: 我必須切斷它,不使用CSS,並說display:none;因爲我想做一個完美的SEO網站,我不想嵌入不重要的事情!

這是我需要的網站嵌入和我想要的標籤後嵌入寄託都:

<body bgcolor="#ECECEC" leftmargin="0" topmargin="0" rightmargin="0" bottommargin="0" marginwidth="0" marginheight="0" link="#CC0000" vlink="#666666" alink="#000000")="" <center=""> 
    <iframe id="a8febc47" name="a8febc47" ...</iframe> 
    ... 
    ... 
    ... 
    ... 
</body> 

將約幫助非常自豪!

+0

你可以在這裏使用PHP嗎? – Luca

+1

如果頁面不需要安全連接,則可以使用.htaccess執行301重定向到顯示非安全iframe的非安全頁面。擁有一個非安全的iframe可能會破壞頁面安全的目的,特別是如果框架中的頁面不是您自己的頁面。另一方面,如果頁面屬於你,你也可以保證這一點。 – Bryan

+1

您也可以使用服務器端語言來獲取頁面,緩存本地副本並使用您自己的域以https進行本地顯示。正如Luca Kiebel所問,你可以使用PHP嗎? (或者可能是另一種服務器端語言?) – Bryan

回答

1

首先,你不能加載從一個安全的連接通過HTTP的任何內容,每一個瀏覽器應該塊爲內容的請求。否則,中間人可能會在沒有您知道並可能執行惡意代碼的情況下,通過字面替換所請求的數據。

關於只通過iFrame顯示網站的一部分,iFrames的行爲就好像您在另一個窗口中打開網站並根據您的需要調整大小。

只有獲取網站的一部分的唯一方法是讓您的網絡服務器提供一個文件,該文件是您希望放入iFrame中的文件的副本,這意味着您使用服務器剪切了您的部分「不想了, 或者你可以使用jQuery的功能.load只搶你的目標的一部分:

var url = "https://example.com"; // any domain, as long as it uses HTTPS when you use it 
 
var fragment= "div > p"; // any valid CSS-Selector 
 

 
$("#target-div").load(url + " " + fragment);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<p>Data from https://example.com. Not working due to CORS....</p> 
 
<div id="target-div"></div>

正如你看到的,這是行不通的,在這種情況下,它的CORS頭,但也許你想要數據的網站有它的Access-Control-Allow-Origin頁眉設置爲* ...

隨着提供給您的PHP,你可以使用DOMDocument類來解析和處理其他一些網站的HTML:

<?php 

# Use the Curl extension to query your website and get back the full page 
$url = "http://your-other-domain.com"; 
$tag = "table"; 
$ch = curl_init(); 
$timeout = 5; 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); 
$html = curl_exec($ch); 
curl_close($ch); 

# Create a DOM parser object 
$dom = new DOMDocument(); 

# Parse the HTML 
# The @ before the method call suppresses any warnings that 
# loadHTML might throw because of invalid HTML in the page. 
@$dom->loadHTML($html); 

# Iterate over all the <$tag> tags 
foreach($dom->getElementsByTagName($tag) as $table) { 
     echo $table; 
} 

您可以修改此採取$url$tag作爲GET參數並使其更具響應性。現在做的是回顯頁面上的所有表格,如果您只有一個表格,則應該執行該作業。

希望我能幫你找出解決辦法,

乾杯!

+0

現在添加PHP:https://stackoverflow.com/questions/44270593/e​​mbed-iframe-to-https-from-http-and-embed-only-certain-parts/44271210#comment75550034_44270593 – Luca