Javascript XMLHttpRequest从远程主机获取HTTP响应
为什么下面的代码不起作用?在Firefox 3.5.7和Chrome上试用过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
<!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是如何收集数据的?: