我刚遇到一个重要的问题,因为我有很多来自其他域的来源,这意味着如果我使用iframe,我必须调整所有这些内容。但问题是我无法修改或插入源代码网页的代码。 因为这些,我想问一下是否有其他解决方案可以跳过使用iframe? 提示:我需要从网址中获取整个内容(包括图片,css等)。不属于内容。
答案 0 :(得分:1)
PHP的include功能可能是最好的起点。它只是您无法更改的标记,还是您能够使用PHP和JavaScript?
编辑:
尝试使用include('http://www.google.com')
在您的网页中添加网址,而不使用iFrame。代码中的任何非绝对目录引用(如<img src='/img.png'>
)都不会正确显示或加载。
如果您需要修复这些引用并且无法更改标记本身,可以使用file_get_contents
函数并修改如下内容:
$page = file_get_contents('http://www.google.com');
$page = preg_replace('/(href|src)=([\'"])\//',"$1=$2http://google.com/",$page);
echo $page;
答案 1 :(得分:1)
快速的想法 - 您可以尝试在服务器端编写代理并在iframe中提供内容,但src指向代理页而不是真实页(即使用传递的参数控制)
答案 2 :(得分:0)
使用JSONP数据类型进行AJAX调用以返回其他页面的内容。您需要对两个域上的代码进行修改才能使其工作。 http://en.wikipedia.org/wiki/JSONP
答案 3 :(得分:0)
修改了@beanland的答案,我的 /proxy.php 文件,缓存:
$host = parse_url($_GET['url'], PHP_URL_HOST);
$dir = $_SERVER[DOCUMENT_ROOT].'/cache_proxy/'.$host;
if(!is_dir($dir))
mkdir($dir);
$filepath = $dir.'/'.md5($_GET['url']);
if(is_file($filepath)){
include($filepath);
}else{
$page = file_get_contents($_GET['url']);
$page = preg_replace('/(a href)=[\'\"](http.*)[\'\"]/', '$1="http://buy/proxy.php?url=$2"', $page);
$page = preg_replace('/(a href)=[\'"][^http](.*)[\'"]/', '$1="http://buy/proxy.php?url=http://'.$host.'/$2"', $page);
$page = preg_replace('/(href|src)=[\'"][^http+](.*)[\'"]/', '$1="http://'.$host.'/$2"', $page);
file_put_contents($filepath, $page);
echo $page;
}
首先替换代理的所有<a href="">
个链接,然后将所有相对<img src="/path...">
等替换为绝对<img src="http://...">
答案 4 :(得分:-1)
jQuery加载到div http://api.jquery.com/load/