首先,你不能加載從一個安全的連接通過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參數並使其更具響應性。現在做的是回顯頁面上的所有表格,如果您只有一個表格,則應該執行該作業。
希望我能幫你找出解決辦法,
乾杯!
你可以在這裏使用PHP嗎? – Luca
如果頁面不需要安全連接,則可以使用.htaccess執行301重定向到顯示非安全iframe的非安全頁面。擁有一個非安全的iframe可能會破壞頁面安全的目的,特別是如果框架中的頁面不是您自己的頁面。另一方面,如果頁面屬於你,你也可以保證這一點。 – Bryan
您也可以使用服務器端語言來獲取頁面,緩存本地副本並使用您自己的域以https進行本地顯示。正如Luca Kiebel所問,你可以使用PHP嗎? (或者可能是另一種服務器端語言?) – Bryan