在自己的网站中显示外部内容(将浏览器模拟为Web应用程序)

时间:2016-04-13 09:05:40

标签: javascript php html iframe cors

我想构建一个Web应用程序,提供有关“动态”网站的其他信息。例如,用户访问我的网站,但他们可以浏览其他网页,例如,在iframe内作为我网站的主要部分。但现在,根据用户当前浏览的网站,我还想显示其他信息,例如与该网站相关的一些评论或评级。

使用iframe显示外部页面的解决方案非常简单。但是,由于安全问题,如果URL不是作为父页面的域,则无法跟踪iframe中当前加载的URL。一旦用户点击外部页面中的链接,我的父页面就不会知道新位置,因此无法更新附加信息。

我尝试了一些简单的解决方法,包括使用PHP脚本grab.php来获取和显示外部内容:

<?php
  $ch = curl_init($_GET['url']);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
  $content = curl_exec($ch);
  curl_close($ch); 
  echo $content;
?>

然后src的{​​{1}}总是像

iframe

但这有几个问题。首先,相对源(例如,图像)指向具有我的域的位置,因此不显示。其次,我还需要将外部页面中包含的所有相对和绝对链接调整为类似<iframe src="grab.php?url=http://www.google.com" width="1200" height="800"></iframe> 的内容。最后,这不适用于外部页面必须动态加载的内容。最后一点似乎是一个主要的嗡嗡声。

现在我的问题是,是否有任何方式可以实现?

(我目前有一个使用浏览器扩展的解决方案,它会打开一个弹出窗口来显示其他信息。但显然这个扩展程序依赖于浏览器,而且一个不需要用户安装扩展程序的替代解决方案就是如果我能得到grab.php?url=...的当前网址,那么一切都会变得微不足道。

0 个答案:

没有答案