emu in blogjava

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            171 隨筆 :: 103 文章 :: 1052 評論 :: 2 Trackbacks

          測試代碼如下:
          xml.xml
          一個(gè)簡單的xml文件

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


          test.htm:
          一個(gè)簡單的使用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文件發(fā)布出去,通過emu.emu.com域名來訪問test.htm文件,結(jié)果報(bào)錯(cuò):

          調(diào)用方法 XMLDocument.getElementsByTagName 時(shí)權(quán)限不足


          只要設(shè)置了domain,不管domain怎么設(shè),getElementsByTagName 都肯定報(bào)權(quán)限不足錯(cuò)誤。其實(shí)根本就沒有任何跨域操作,而且連responseText都可以獲得了,訪問getElementsByTagName 還有什么權(quán)限限制的必要?莫名其妙!

          IE下運(yùn)行就很正常。在firefox下把document.domain="emu.emu.com"這一行刪除后也運(yùn)行正常,因此確定是firefoxbug

          按照http://www.mozilla.org/projects/security/components/jssec.html 中的說明設(shè)置netscape.security.PrivilegeManager.enablePrivilege 來提升頁面訪問權(quán)限也無法解決此問題。

          這個(gè)bug造成了合法的跨域xml請求(同一個(gè)父域)無法正確解析返回的xml數(shù)據(jù)(但是能訪問文本信息)。這不是逼我用AjaH嘛?

          posted on 2006-03-01 15:44 emu 閱讀(3020) 評論(10)  編輯  收藏

          評論

          # re: FireFox 的xmlhttprequest控件域權(quán)限判斷錯(cuò)誤的bug 2006-04-27 18:54 weijnzheng
          謝謝老大  回復(fù)  更多評論
            

          # re: FireFox 的xmlhttprequest控件域權(quán)限判斷錯(cuò)誤的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>無標(biāo)題頁</title>
          <script type="text/javascript">

          var xmlhttp;
          function createHTTP()
          {
          //根據(jù)不同的瀏覽器創(chuàng)建XMLHttpRequest
          xmlhttp=window.XMLHttpRequest?(new XMLHttpRequest()):(new ActiveXObject("Microsoft.XMLHTTP"));//選擇合適的xmlhttprequest控件
          }
          //開始調(diào)用
          function startHTTP()
          {
          //創(chuàng)建對象
          createHTTP();
          //狀態(tài)變化與事件掛鉤
          xmlhttp.onreadystatechange=StateDO;
          //獲取XML文件的數(shù)據(jù)
          xmlhttp.open("GET","XMLFile.xml",true);
          //不帶任何參數(shù)
          xmlhttp.send(null);
          }
          function StateDO()
          {
          //判斷是否是完成狀態(tài)
          if(xmlhttp.readystate==4)
          {
          alert(xmlhttp.responseText);
          //判斷是否執(zhí)行成功
          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>
            回復(fù)  更多評論
            

          # re: FireFox 的xmlhttprequest控件域權(quán)限判斷錯(cuò)誤的bug[未登錄] 2007-07-26 00:32 Lex
          希望LZ能幫幫忙....我也是在FF下讀不了XML....  回復(fù)  更多評論
            

          # re: FireFox 的xmlhttprequest控件域權(quán)限判斷錯(cuò)誤的bug 2007-08-01 09:26 開始づKiss
          xmlhttp.overrideMimeType('text/xml')

          FF讀XML必須要加這一句  回復(fù)  更多評論
            

          # re: FireFox 的xmlhttprequest控件域權(quán)限判斷錯(cuò)誤的bug 2007-08-02 19:37 emu
          不是FF讀xml要加這一句,而是服務(wù)器輸出xml的時(shí)候沒有正確輸出'text/xml'的情況下要加這一句。這和上面的權(quán)限問題沒有什么關(guān)系。  回復(fù)  更多評論
            

          # re: FireFox 的xmlhttprequest控件域權(quán)限判斷錯(cuò)誤的bug 2007-10-09 16:20 crystal
          原來如此 原來是個(gè)bug
          不知有沒有方法可以解決呢?  回復(fù)  更多評論
            

          # re: FireFox 的xmlhttprequest控件域權(quán)限判斷錯(cuò)誤的bug 2007-10-10 13:58 emu
          偶現(xiàn)在讀操作主要用json來解決了。寫操作不主張用get方式,看來只能用form post了。  回復(fù)  更多評論
            

          # re: FireFox 的xmlhttprequest控件域權(quán)限判斷錯(cuò)誤的bug 2007-11-16 09:14 tusury
          跨域的問題現(xiàn)在多數(shù)瀏覽器的最新版本都是這樣設(shè)定的
          ie7,firefox都一樣,主要是為了安全考慮,但給開發(fā)者很大的麻煩
          我前不久也碰到這個(gè)問題,半天沒搞定,無奈采取其他的解決方案
          希望又比較可行的解決辦法  回復(fù)  更多評論
            

          # re: FireFox 的xmlhttprequest控件域權(quán)限判斷錯(cuò)誤的bug 2008-06-24 16:17 gmmylose@126.com
          此問題在FF3.0上已經(jīng)修正過了。  回復(fù)  更多評論
            

          # re: FireFox 的xmlhttprequest控件域權(quán)限判斷錯(cuò)誤的bug 2009-04-28 21:43 儒道佛
          FF3.5(.1)己放開
          支持跨站點(diǎn)XMLHttpRequest  回復(fù)  更多評論
            


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 清流县| 宝应县| 丁青县| 德州市| 南郑县| 南皮县| 湘西| 东光县| 玛沁县| 团风县| 清流县| 离岛区| 酒泉市| 闽侯县| 富民县| 岳西县| 宣汉县| 慈溪市| 锦屏县| 西青区| 东至县| 江陵县| 容城县| 长汀县| 潍坊市| 郸城县| 于田县| 石柱| 馆陶县| 永年县| 康保县| 搜索| 福清市| 翁牛特旗| 黄石市| 利津县| 长子县| 华坪县| 平阴县| 宣武区| 株洲县|