需要帮助以将外部站点显示为具有相对路径中的媒体的div

时间:2015-07-11 17:12:11

标签: javascript php jquery html curl

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

这个想法 - > http://s10.postimg.org/pm4n1qms9/Cattura.png

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

问题:页面中具有RELATIVE PATH的所有媒体都给出了404状态。我知道,这是正常的,但我想将所有RELATIVE PATH转换为ABSOLUTE PATH或其他内容,以便将媒体显示在面板中。

问题 - > http://s10.postimg.org/9mlzi6qqh/image.png

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

如果您需要,这是代码

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

if (ValidURL($("#areaUrl").val())) {
$.ajax({
method: 'GET',
url: '...',
dataType: 'html',
data: {
 'requestedUrl': $("#areaUrl").val()
},
success: function (data) {
 console.log(data); 
 $('#mainContent').html(data);
},
error: function (xhr, status, error) {
 //something happens
 }
 });
 }

这是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 ;

非常感谢任何想要给我一些提示的人!

1 个答案:

答案 0 :(得分:0)

没有直接的方式来抓取和显示网页,就像我们在网络浏览器中看到的那样。 无论如何你必须转换相对于绝对路径(在HTML代码以及JS和CSS)。 但你必须要小心。如果在爬网后将代码直接插入div,则该代码下包含的JS将不会被浏览器执行。因此,唯一的方法是通过HTML iframe下的代码(从插入中抛出diff)强制执行。