从HTTP嵌入iFrame到HTTPS并仅嵌入某些部分?

时间:2017-05-30 19:38:33

标签: javascript html css http iframe

我想通过iFrame嵌入一个网站。但我有两个问题:

  1. 我有一个HTTPS网站,想要从HTTP网站嵌入一些内容。那么,我该如何保护连接? - 因为如果我通过HTTPS加载我的网站,我的HTTPS网站就不会显示iFrame。通过HTTP它可以工作。但我想要一个安全的连接!

  2. 我想只嵌入网站的某些部分而不是完整的网站。更容易。我只是想从桌面开始嵌入网站,直到网站结束。所以,我只是想削减一点网站的负责人。但这是我的问题: 我必须切断它并且不使用CSS并说display:none;因为我想建立一个完美的SEO网站而且我不想嵌入不重要的东西!

  3. 以下是我要嵌入的网站,我希望在<iframe>代码后嵌入其中:

    <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>
    

    为帮助感到非常自豪!

1 个答案:

答案 0 :(得分:1)

首先,您无法从安全连接通过HTTP加载任何内容,每个浏览器阻止对该内容的请求。否则,中间人可以在不知道并可能执行恶意代码的情况下用字面上的任何内容替换所请求的数据。

关于仅通过iFrame显示网站的一部分,iFrame的行为就像您在另一个窗口中打开网站一样,并根据您的需要调整其大小。

仅获取网站的一部分的唯一方法是让您的网络服务器提供一个文件,该文件是您要放入iFrame中的内容的克隆,这意味着您使用服务器来剪切您不喜欢的部分&# 39;想要关闭, 或者您可以使用jQuery函数.load来仅获取目标的一部分:

&#13;
&#13;
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);
&#13;
<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>
&#13;
&#13;
&#13;

如您所见,这不起作用,在这种情况下它是CORS标头,但是您想要数据的网站可能将Access-Control-Allow-Origin标头设置为{{1} } ...

使用PHP,您可以使用*类来解析和操作其他网站的HTML:

DOMDocument

您可以对此进行修改,将<?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作为GET参数,并使其更具响应性。现在这样做就是回显你页面上的所有表格,如果你只有一个表格,那就应该做好工作。