2017-05-30 1112 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