Javascript 需要帮助以相对路径将外部站点显示到媒体所在的div中吗

Javascript 需要帮助以相对路径将外部站点显示到媒体所在的div中吗,javascript,php,jquery,html,curl,Javascript,Php,Jquery,Html,Curl,我的目标是创建一个网站,您可以在其中将url插入文本区域,打开它并将其显示在同一页面的单独div中 想法-> 我知道这个问题在过去是可以回答的(我读过一些关于它的其他话题),但不幸的是,没有人帮我解决我要解释的问题 问题是:页面中具有相对路径的所有媒体都显示404状态。我知道,这是正常的,但我想将所有相对路径转换为绝对路径或其他方式,以便在面板中显示媒体 问题-> 我不是要求做我的工作,但我正在拼命寻找一些提示或建议 如果你需要,这是代码 客户端(javascript,按下url栏下方的按钮时激

我的目标是创建一个网站,您可以在其中将url插入文本区域,打开它并将其显示在同一页面的单独div中

想法->

我知道这个问题在过去是可以回答的(我读过一些关于它的其他话题),但不幸的是,没有人帮我解决我要解释的问题

问题是:页面中具有相对路径的所有媒体都显示404状态。我知道,这是正常的,但我想将所有相对路径转换为绝对路径或其他方式,以便在面板中显示媒体

问题->

我不是要求做我的工作,但我正在拼命寻找一些提示或建议

如果你需要,这是代码

客户端(javascript,按下url栏下方的按钮时激活)

下面是PHP服务器代码

<?php

//the function I found to download the page with curl
function get_data($url) {
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$data = utf8_decode(curl_exec($ch));
curl_close($ch);
return $data;
}

//answering the client...
$url = $_GET['urlRichiesto'];

$forTheClient = get_data($url);
header('Access-Control-Allow-Origin: * ;'); 
header('Content-type: text/html; charset = UTF-8');

echo $forTheClient ;

没有像我们在web浏览器中看到的那样直接抓取和显示网页的方法。
无论如何,您必须将相对路径转换为绝对路径(在html代码以及JS&CSS中)。

但是你必须小心。如果在爬网后直接将代码插入到div,则浏览器将不会执行该代码下包含的JS。因此,唯一的方法是通过HTML iframe下的代码(抛出与插入不同)强制执行

您是否考虑过使用
iframe
而不是
div
?这正是他们的目的。您可能正在查找
文件\u get\u contents()
以从网站获取源代码。接下来,您需要一些正则表达式来查找相对路径,如
src='images/some_image.png'
,并在其前面插入url。可能是
preg\u replace()
。但是,如果媒体文件在docroot之外,您就有麻烦了,除了将所有媒体内容下载到您自己的服务器并用它替换源文件之外,没有其他方法可以解决这个问题。我想说的是,你可能会因此而受到版权问题的困扰。不过我必须提到,大多数网站都会使用CSS文件作为媒体内容。在这种情况下,它变得更加复杂。这仍然是可能的,但结果永远不会是最优的。。。如果我想从下载的页面中排除所有媒体呢?你认为有可能吗?什么意思?您想在div中下载整个网站,但不包括所有媒体?你确实意识到你所做的事情会导致很多问题,以至于根本不可行,是吗?比如,如果网站包含任何链接,而你的用户点击了这些链接,这将导致他们从你的网站浏览出去。
iframe
可能是一种更好的解决方案。正如您和Icecube(在主要帖子的评论中)所建议的,我将尝试使用i-frame,并会让您知道。再次感谢!
<?php

//the function I found to download the page with curl
function get_data($url) {
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$data = utf8_decode(curl_exec($ch));
curl_close($ch);
return $data;
}

//answering the client...
$url = $_GET['urlRichiesto'];

$forTheClient = get_data($url);
header('Access-Control-Allow-Origin: * ;'); 
header('Content-type: text/html; charset = UTF-8');

echo $forTheClient ;