2009-09-23 80 views
0

我正在使用XMLHttpRequest從遠程服務器獲取數據的FireFox擴展。XMLHttpRequest,FireFox擴展和錯誤代碼'1012'(拒絕訪問)

JavaScript代碼如下:

function _PostBackObject(data) { 
    var postBack = new XMLHttpRequest(); 
    postBack.onreadystatechange = 
     function(){ 
      if (postBack.readyState == 4) { 
       if (postBack.status == 200) { 
        // Success 
        return; 
       } 

       _ErrorOccured(postBack.status); 
      } 
     }; 

    postBack.open("POST", postBackUrl, true, user, password); //This is line #51 
    postBack.send(data); 
} 

我碰到下面的錯誤在Firefox的控制檯:

Error: uncaught exception: [Exception... "Access to restricted URI denied" code: "1012" nsresult: "0x805303f4 (NS_ERROR_DOM_BAD_URI)" location: "chrome://my_ext/content/context.js Line: 51"]

一項PostBackUrl可以是任何東西(用於測試目的,我一直在使用本地機器[127.0.0.1]和服務器坐在我的本地網絡[so 192.168。*。*]上,都在端口8088上),因爲它是用戶輸入的。

看起來我正在跳過XSS安全措施。我將如何解決這個問題?

一些額外的細節:

  • 火狐3.5.3(這是可以接受的,以限制該和新
  • 無符號擴展(我會自我簽名,但這是一個相當麻煩和收益你什麼,據我可以告訴)
  • 我已經在遠程服務器的完全控制(它是一個自定義安裝,而不是Apache或IIS,在C#編寫的.NET 3.5)
+0

這是第51行嗎? – luiscubal 2009-09-23 20:20:20

+2

這將是一個標記// This This Line#51 – 2009-09-23 20:28:53

回答

3

首先,如果你使用chrome調用它,你的代碼不應該碰到任何跨站點檢查。 Chrome代碼默認允許進行跨站點XHR。你是直接從chrome調用它,還是你以某種方式將它注入內容? http://mxr.mozilla.org/mozilla-central/source/content/base/src/nsXMLHttpRequest.cpp#1736

其次,只有三個在XHR代碼的地方返回的特定錯誤代碼: http://mxr.mozilla.org/mozilla-central/source/content/base/src/nsXMLHttpRequest.cpp#491 http://mxr.mozilla.org/mozilla-central/source/content/base/src/nsXMLHttpRequest.cpp#1581 http://mxr.mozilla.org/mozilla-central/source/content/base/src/nsXMLHttpRequest.cpp#2996

也都設有預檢要求做到: http://www.w3.org/TR/access-control/#preflight-request

是你的服務器獲取其中的一個,並且處理不當?

+0

我正在省略'Access-Control-Request-Method'標題。 – 2009-10-02 11:04:38

相關問題