【问题标题】:HTML source code of external webpage as string [closed]外部网页的 HTML 源代码作为字符串 [关闭]
【发布时间】:2013-02-09 20:09:39
【问题描述】:

我网站上的用户将在textbox 中输入一个网址(另一个域上的公共页面)。我想将该页面的 HTML 源代码作为字符串获取。如何使用客户端脚本来做到这一点?

以下是我加载 url 时所做的。但无法弄清楚如何获取 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>

【问题讨论】:

  • 使用客户端 JavaScript 无法做到这一点。
  • @JohnFx 如果你能解释一下为什么这是一个不好的问题,那就太好了。我会改进的。
  • 您没有发布任何代码说明您为解决问题所做的工作,或提供指向您的网站的链接,表明您明确尝试自己解决问题。
  • @howderek 感谢您的澄清。添加了我所做的。
  • @Ashni Goyal - 您的原始帖子相当于“为我做我的工作”。您必须提出实际问题,而不是要求我们为您编写代码。

标签: javascript html ajax


【解决方案1】:

在您的服务器上创建一个脚本,并使用 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 将包含内容。

【讨论】:

  • 这是 php 代码。我想使用 javascript 来实现这一点。任何可能的 JS 方式?
  • 不,出于安全原因,您不能在 JS 中执行此操作。正如我所说,您必须使用这样的方法并实现 AJAX。
  • 你说的是单一来源政策吗?
  • 确实,请查看this community wiki 的主题。
【解决方案2】:

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

你最好的选择是:

  • 通过 AJAX 将 url 发送到您的应用服务器
  • 从您的应用服务器执行 HTTP GET(Java / PHP 等)
  • 用其他网站的文字回复AJAX请求
  • 然后将源代码展示给您的用户

【讨论】:

  • 我真的不想去服务器了。
  • 我知道返回服务器需要做更多的工作,但恐怕无法在客户端执行此操作。跨站点脚本存在安全问题,导致现代浏览器阻止此功能。
  • 但这应该适用于私人数据而不是公共网页。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-20
  • 1970-01-01
  • 1970-01-01
  • 2016-02-24
  • 2011-06-02
  • 1970-01-01
相关资源
最近更新 更多