2009-09-23 107 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