Firefox取消XMLHttpRequest的跨域限制  2008-04-10   Web  

的核心对象XMLHttpRequest可以实现无刷新地与服务器进行异步通信,但是必须是访问同一个域名下的服务器,如果要访问其他域名服务器-跨域访问(cross-domain),各浏览器都加以限制。而且为了安全方面的考虑,最新版本浏览器在跨域访问上采取的限制越来越严格,有的浏览器(IE7)彻底禁止了的跨域访问。Firefox2.0还可以实现跨域访问,如果要取消Firefox对XMLHttpRequest的跨域限制,需要进行两个方面的设置:
首先:需要修改Firefox的设置,地址栏输入about:config,按回车
设置 signed.applets.codebase_principal_support = true(默认为false)

然后,在页面的代码中,调用XMLHttpRequest方法open前加入如下代码:
try {
netscape.security.PrivilegeManager.enablePrivilege(”UniversalBrowserRead”);
} catch (e) {
alert(”Permission UniversalBrowserRead denied.”);
}
进行以上两个步骤之后,用户使用Firefox浏览器查看该页面发送请求时,会弹出一个窗口提示用户设置UniversalBrowserRead权限。

完整代码如下:
var xmlHttp=false;
try{
xmlHttp=new ActiveXObject(”Msxml2.XMLHTTP”);
}catch(e){
try{
xmlHttp=new ActiveXObject(”Microsoft.XMLHTTP”);
}catch(e){
xmlHttp=false;
}
}
if(!xmlHttp && typeof XMLHttpRequest!=”undefined “){
try{
netscape.security.PrivilegeManager.enablePrivilege(”UniversalBrowserRead”);
}catch(e){
alert(”设置UniversalBrowserRead出错”);
}
xmlHttp=new XMLHttpRequest();
}
xmlHttp.open(”http://www.google.com”);
xmlHttp.send(null);
var response=null;
if (xmlHttp.status == 200) {
response = xmlHttp.responseText;
}

标签: ,


 发表评论

(必填)

(必填)

评论(必填,最多字数:100):