首先,你不能加载从一个安全的连接通过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