javascript:如何获取网页的内容

时间:2011-03-14 14:05:07

标签: javascript html xmlhttprequest fetch responsetext

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

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

有更好的方法/代码吗?

4 个答案:

答案 0 :(得分:7)

使用像php页面这样的服务器端代理来读取所需的页面,然后通过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);
}

答案 1 :(得分:6)

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

还有'JSONP',但这通常用于提供特定JSONP访问的网站,而大多数随机网址都没有。

答案 2 :(得分:4)

出于安全原因,您无法使用AJAX将请求发送到其他域。

答案 3 :(得分:2)

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

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