Javascript XMLHttpRequest从远程主机获取HTTP响应

Javascript XMLHttpRequest从远程主机获取HTTP响应,javascript,xmlhttprequest,Javascript,Xmlhttprequest,为什么下面的代码不起作用?在Firefox 3.5.7和Chrome上试用过 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> </head> <body> </body> <script> var req = new

为什么下面的代码不起作用?在Firefox 3.5.7和Chrome上试用过

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
</head>
<body>
</body>
  <script>
    var req = new XMLHttpRequest();
    req.open('GET', 'http://www.mozilla.org/', false); 
    req.send();
    if(req.status == 200) {
        alert(req.responseText);
    }
  </script>  
</html>

var req=新的XMLHttpRequest();
请求打开('GET','http://www.mozilla.org/",假),;
请求发送();
如果(请求状态==200){
警报(请求响应文本);
}
请确保浏览器正在从本地磁盘提取html(file:///C:/Users/Maxim%20Veksler/Desktop/XMLHTTP.html)

在Firefox上,它会出现以下错误:

uncaught exception: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIXMLHttpRequest.send]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: file:///C:/Users/Maxim%20Veksler/Desktop/XMLHTTP.html :: <TOP_LEVEL> :: line 10" data: no]
uncaught exception:[异常…”组件返回故障代码:0x80004005(NS\u错误\u失败)[nsIXMLHttpRequest.send]“nsresult:”0x80004005(NS\u错误\u失败)”位置:“JS帧::file:///C:/Users/Maxim%20Veksler/Desktop/XMLHTTP.html 第10行“数据:否]
我做错了什么?我想向远程主机提交请求并通知结果(稍后添加到div中)。

安全问题否

可能firefox正在阻止本地文件与远程主机通信

在网上搜寻——发现了这个。尝试将以下内容添加到脚本的开头:

try {
  netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
} catch (e) {
  alert("Permission UniversalBrowserRead denied.");
}
不能保证这会起作用;因为最终你要做的是进入一个安全漏洞,浏览器已经被专门编码为堵塞(跨域请求)


但是,在某些特殊情况下,它可以打开,通常由用户自行决定。

即使使用本地文件,也不能跨域发出请求


除非您正在开发扩展,该扩展没有与网页相同的限制。

您的浏览器正在阻止。您必须使用相对路径,否则大多数浏览器只会返回错误或空的responseText

以下堆栈溢出帖子可能也与您的问题有关:


我还假设,根据您对
file:///...
。对于
XMLHttpRequest
调用,需要从服务器提供HTML。尝试类似xampp()的方法来启动并运行本地服务器,然后从
http://localhost/XMLHTTP.html

注意,这并不能解决同源问题,但这将允许以下代码工作:

  <script>
    var req = new XMLHttpRequest();
    req.open('GET', '/myTestResponse.html', false); 
    req.send();
    if(req.status == 200) {
        alert(req.responseText);
    }
  </script>

var req=新的XMLHttpRequest();
请求打开('GET','/myTestResponse.html',false);
请求发送();
如果(请求状态==200){
警报(请求响应文本);
}

OK,那么google analytics integration javascript代码是如何工作的呢?@Maxim:你可能想看看这篇so帖子:google analytics是如何收集数据的?: