emu in blogjava

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  171 随笔 :: 103 文章 :: 1052 评论 :: 2 Trackbacks

测试代码如下:
xml.xml
一个简单的xml文件

<?xml version="1.0" encoding="gb2312"?>
<data>abc</data>


test.htm:
一个简单的使用xmlhttprequest获取xml资源的页面:

<html>
<head>
 
<script type="text/JavaScript">
 <!--
 document.domain="emu.emu.com"
 
var newsXML;
 
function init(){
  newsXML = window.XMLHttpRequest?(
new XMLHttpRequest()):(new ActiveXObject("Microsoft.XMLHTTP"));//选择合适的xmlhttprequest控件
  newsXML.onreadystatechange= handleXML;
  newsXML.open("GET","xml.xml",
true);
  newsXML.send(
null);
 }
 
function handleXML(){
  
if(newsXML.readyState==4){
        alert(newsXML.responseText)
        
try{
            alert(newsXML.responseXML.getElementsByTagName("data").length)
        }
catch(e){
            alert(e)
        }
  }
 }
 
//-->
 </script>
</head>
<body onload="init()">
测试firefoxbug
</body>
</html>


注意这一行: 
document.domain="emu.emu.com"

配置WINDOWS\system32\drivers\etc\hosts

127.0.0.1       localhost
127.0.0.1       emu.emu.com


好了,开启apache把上面的xmlhtm文件发布出去,通过emu.emu.com域名来访问test.htm文件,结果报错:

调用方法 XMLDocument.getElementsByTagName 时权限不足


只要设置了domain,不管domain怎么设,getElementsByTagName 都肯定报权限不足错误。其实根本就没有任何跨域操作,而且连responseText都可以获得了,访问getElementsByTagName 还有什么权限限制的必要?莫名其妙!

IE下运行就很正常。在firefox下把document.domain="emu.emu.com"这一行删除后也运行正常,因此确定是firefoxbug

按照http://www.mozilla.org/projects/security/components/jssec.html 中的说明设置netscape.security.PrivilegeManager.enablePrivilege 来提升页面访问权限也无法解决此问题。

这个bug造成了合法的跨域xml请求(同一个父域)无法正确解析返回的xml数据(但是能访问文本信息)。这不是逼我用AjaH嘛?

posted on 2006-03-01 15:44 emu 阅读(3006) 评论(10)  编辑  收藏

评论

# re: FireFox 的xmlhttprequest控件域权限判断错误的bug 2006-04-27 18:54 weijnzheng
谢谢老大  回复  更多评论
  

# re: FireFox 的xmlhttprequest控件域权限判断错误的bug[未登录] 2007-07-26 00:30 Lex
我遇到的情况不知道是不是和你一样...郁闷...
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>无标题页</title>
<script type="text/javascript">

var xmlhttp;
function createHTTP()
{
//根据不同的浏览器创建XMLHttpRequest
xmlhttp=window.XMLHttpRequest?(new XMLHttpRequest()):(new ActiveXObject("Microsoft.XMLHTTP"));//选择合适的xmlhttprequest控件
}
//开始调用
function startHTTP()
{
//创建对象
createHTTP();
//状态变化与事件挂钩
xmlhttp.onreadystatechange=StateDO;
//获取XML文件的数据
xmlhttp.open("GET","XMLFile.xml",true);
//不带任何参数
xmlhttp.send(null);
}
function StateDO()
{
//判断是否是完成状态
if(xmlhttp.readystate==4)
{
alert(xmlhttp.responseText);
//判断是否执行成功
if(xmlhttp.status==200)
{
//更新页面上的某元素
document.getElementById("mytext").innerHTML=xmlhttp.responseText;
}
}
}
</script>
</head>
<body>
<div id="msg" style="text-align:left;"></div>
<div style="DIRECTION: ltr; LETTER-SPACING: normal; POSITION: static; border:1px solid #e8e8e8; BACKGROUND-COLOR: #fafafa; TEXT-ALIGN: center" id="mytext">null</div>
<input type="button" value="更新DIV" onclick="startHTTP()" />
</body>
</html>

XML:
<table border="1">
<tbody>
<tr>
<th>Name</th>
<th>Sex</th>
<th>Age</th>
</tr>
<tr>
<th>zgb</th>
<th>male</th>
<th>23</th>
</tr>
<tr>
<th>huf</th>
<th>male</th>
<th>27</th>
</tr>
</tbody>
</table>
  回复  更多评论
  

# re: FireFox 的xmlhttprequest控件域权限判断错误的bug[未登录] 2007-07-26 00:32 Lex
希望LZ能帮帮忙....我也是在FF下读不了XML....  回复  更多评论
  

# re: FireFox 的xmlhttprequest控件域权限判断错误的bug 2007-08-01 09:26 开始づKiss
xmlhttp.overrideMimeType('text/xml')

FF读XML必须要加这一句  回复  更多评论
  

# re: FireFox 的xmlhttprequest控件域权限判断错误的bug 2007-08-02 19:37 emu
不是FF读xml要加这一句,而是服务器输出xml的时候没有正确输出'text/xml'的情况下要加这一句。这和上面的权限问题没有什么关系。  回复  更多评论
  

# re: FireFox 的xmlhttprequest控件域权限判断错误的bug 2007-10-09 16:20 crystal
原来如此 原来是个bug
不知有没有方法可以解决呢?  回复  更多评论
  

# re: FireFox 的xmlhttprequest控件域权限判断错误的bug 2007-10-10 13:58 emu
偶现在读操作主要用json来解决了。写操作不主张用get方式,看来只能用form post了。  回复  更多评论
  

# re: FireFox 的xmlhttprequest控件域权限判断错误的bug 2007-11-16 09:14 tusury
跨域的问题现在多数浏览器的最新版本都是这样设定的
ie7,firefox都一样,主要是为了安全考虑,但给开发者很大的麻烦
我前不久也碰到这个问题,半天没搞定,无奈采取其他的解决方案
希望又比较可行的解决办法  回复  更多评论
  

# re: FireFox 的xmlhttprequest控件域权限判断错误的bug 2008-06-24 16:17 gmmylose@126.com
此问题在FF3.0上已经修正过了。  回复  更多评论
  

# re: FireFox 的xmlhttprequest控件域权限判断错误的bug 2009-04-28 21:43 儒道佛
FF3.5(.1)己放开
支持跨站点XMLHttpRequest  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: