JavaScript:如何获取网页内容

11

在 JavaScript 中,是否可以将网页内容获取并赋值给变量?例如,为什么以下简单示例代码无法工作?

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

有更好的方法/代码吗?


2
http://en.wikipedia.org/wiki/Same_origin_policy - epascarello
4个回答

12

使用服务器端代理,例如读取所需页面的 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);
}

8

由于安全问题,Ajax请求无法访问其他域上的文件/页面,因此上述方法不起作用。通常,您可以使用[插入服务器端语言]编写脚本以下载所请求的页面。然后,您的JavaScript可以向该页面发出请求。

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


6

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


2
如果你真的需要这样做,可以尝试使用jQuery和iFrames(请阅读更多信息,访问http://softwareas.com/cross-domain-communication-with-iframes)。此外,您可以尝试在头部中使用Access-Control-Allow-Origin:http://yourdomain:1234/,搜索跨域资源共享。虽然这是相对较新的技术,但并不是所有浏览器都支持。这还取决于您是否控制其他服务器头文件生成和其他一些因素。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接