2013-02-08 44 views
0

我网站上的用户将在textbox中输入url(另一个域中的公共页面)。我想以字符串的形式获取页面的HTML源代码。如何使用客户端脚本执行此操作?外部网页的HTML源代码为字符串

以下是我所做的加载网址。但无法弄清楚如何获取html。

<!DOCTYPE html> 
<head> 
<script> 
function myFunction() 
{ 
document.getElementById("site").src=document.getElementById("web").value; 
} 
</script> 
</head> 
<body> 
<input id="web" type="text" name="user"> 
<input type="submit" value="Submit" onclick="myFunction()"> <br/> 
<iframe id="site" src="" width="1200" height="1200"></iframe> 

</body> 
</html> 
+1

你不能做到这一点与客户端JavaScript。 – Blender 2013-02-08 19:00:59

+0

@JohnFx这将是很好,如果你解释为什么这是一个坏问题。我会改进它。 – 2013-02-08 19:05:52

+1

您没有发布任何代码,说明您已经尝试解决问题,或者提供指向您的网站的链接,以明确尝试自己解决问题。 – howderek 2013-02-08 19:07:25

回答

3

您的服务器上创建一个脚本,并使用AJAX调用它,然后用cURL像这样:

$ch = curl_init(); 
$timeout = 10; 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); 

$data = curl_exec($ch); 

curl_close($ch); 

而且$data将包含的内容。

+0

这是php代码。我想用JavaScript来实现这一点。任何JS方式都可能? – 2013-02-08 19:04:46

+2

不,你出于安全原因不能在JS中这样做。正如我所说,你必须使用像这样的方法并实现AJAX。 – 2013-02-08 19:06:16

+0

您是否在谈论单一来源政策? – 2013-02-08 19:08:00

2

由于Same Origin Policy的原因,恐怕您的网站上的JavaScript无法访问其他网站的源代码。这是为了防止Cross Site Scripting攻击。例如,如果用户登录到他们的电子邮件帐户,相同来源策略会阻止在同一浏览器中打开的其他网站尝试访问您的电子邮件。

你最好的选择是:

  • 通过AJAX
  • 将该网址发送给您的应用程序服务器从应用服务器执行HTTP GET(用Java/PHP等)
  • 回复AJAX与其他网站
  • 的文本请求。然后显示源代码到用户
+0

我真的不想去服务器。 – 2013-02-08 19:24:18

+0

我知道回到服务器还有更多的工作要做,但是恐怕客户端无法做到这一点。跨站点脚本存在安全问题,这使得现代浏览器阻止了这种功能。 – user2055306 2013-02-08 20:12:59

+0

但这应该适用于非公开网页的私人数据。 – 2013-02-08 21:03:54

相关问题