XMLHttpRequest,FireFox扩展和错误代码'1012'(拒绝访问)

时间:2009-09-23 20:15:35

标签: javascript firefox xmlhttprequest

我正在使用一个FireFox扩展,它使用XMLHttpRequest从远程服务器获取数据。

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控制台中收到以下错误:

  

错误:未捕获的异常:   [例外......“访问受限制的   URI被拒绝“代码:”1012“nsresult:   “0x805303f4(NS_ERROR_DOM_BAD_URI)”   地点:   “铬://my_ext/content/context.js   行:51“]

postBackUrl可以是任何东西(出于测试目的,我一直在使用本地机器[127.0.0.1]和位于本地网络上的服务器[所以192.168。*。*],都在端口8088上),因为它是用户输入

看起来我正在绊倒XSS安全措施。我该如何解决这个问题?

其他一些细节:

  • FireFox 3.5.3(限制为和更新是可以接受的)
  • 无符号扩展名(我会自我签名,但这是一件非常麻烦的事情,据我所知,你什么也没收到)
  • 我可以完全控制远程服务器(它是一个自定义设置,而不是用C#for .NET 3.5编写的Apache或IIS)

1 个答案:

答案 0 :(得分: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

您的服务器是否收到了其中一个,并且处理不当?