【问题标题】:javascript: how to fetch the content of a web pagejavascript:如何获取网页的内容
【发布时间】:2011-07-15 01:16:42
【问题描述】:

在 JS 中是否可以获取网页的内容并将其分配给变量? 例如,为什么下面的玩具代码不起作用?

var req = new XMLHttpRequest();
req.open('GET', 'http://www.google.com', false);
req.send(null);
if(req.status == 200)
  alert(req.responseText);

有更好的方法/代码吗?

【问题讨论】:

标签: javascript html xmlhttprequest fetch responsetext


【解决方案1】:

使用服务器端代理,例如读取所需页面的 php-page,然后通过 javascript 对该代理进行 ajax 调用:

var req = new XMLHttpRequest();

req.open('GET', 'proxy.php?url=http://www.google.com', false);
req.send(null);

if(req.status == 200) {
   alert(req.responseText);
}

【讨论】:

    【解决方案2】:

    上述方法不起作用,因为出于安全考虑,Ajax 请求无法访问其他域上的文件/页面。通常,您可以使用 [在此处插入服务器端语言] 制作脚本来下载请求的页面。然后你的 javascript 可以向这个页面发出请求。

    还有“JSONP”,但这通常用于提供特定 JSONP 访问的网站,而大多数随机 URL 不提供。

    【讨论】:

      【解决方案3】:

      出于安全原因,您不能使用 AJAX 向其他域发送请求。

      【讨论】:

        【解决方案4】:

        如果你真的需要这样做,你可以尝试使用 jQuery 和 iFrames(阅读更多内容(阅读更多内容http://softwareas.com/cross-domain-communication-with-iframes)。

        此外,您可以尝试使用 Access-Control-Allow-Origin: http://yourdomain:1234/ 在标题中,谷歌用于跨域资源共享。虽然它相对较新,但并非所有浏览器都知道这一点。这也取决于您是否可以控制其他服务器标头的生成以及其他一些事情。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-11-06
          • 2016-12-07
          • 2011-06-24
          • 1970-01-01
          • 1970-01-01
          • 2011-01-23
          • 1970-01-01
          • 2011-10-12
          相关资源
          最近更新 更多