Firefox addon 在FireFox中以自定义协议运行时,XMLHttpRequest中是否存在空白响应文本?

Firefox addon 在FireFox中以自定义协议运行时,XMLHttpRequest中是否存在空白响应文本?,firefox-addon,xss,custom-protocol,responsetext,Firefox Addon,Xss,Custom Protocol,Responsetext,我正在编写一个FireFox插件,它将来自我服务器的网页显示为控制面板和信息面板。这些面板是在常规URL中编写和工作的,但是当我尝试通过自定义协议访问它们时(就像about:,只是myplugin:settings),每个XMLHttpRequest返回空白,就像我在做XSS一样。我知道数据正在通过——请求是有效的,被服务器接受,tcpdump说他们正在进入我的机器。显然,它与自定义协议实现有关,因此以下是相关部分: newURI: function(spec, charset, bas

我正在编写一个FireFox插件,它将来自我服务器的网页显示为控制面板和信息面板。这些面板是在常规URL中编写和工作的,但是当我尝试通过自定义协议访问它们时(就像about:,只是myplugin:settings),每个XMLHttpRequest返回空白,就像我在做XSS一样。我知道数据正在通过——请求是有效的,被服务器接受,tcpdump说他们正在进入我的机器。显然,它与自定义协议实现有关,因此以下是相关部分:

    newURI: function(spec, charset, baseURI)
    {
        var uri = Components.classes[@"mozilla.org/network/simple-uri;1"].createInstance(nsIURI);

        if (baseURI) {
            spec = "myplugin:" + spec;
        }

        uri.spec = spec;

        return(uri);
    },

    newChannel: function(aURI)
    {
        var incomingURI = aURI.spec;
        var purpose = incomingURI.substring(incomingURI.indexOf(":") + 1, incomingURI.length);
        var my_spec;
        var my_uri;
        var proto;

 var api_scheme = "http";
 var api_host = "myapi.myserver.com";
 var api_token = "temp";

        purpose = encodeURI(purpose);

        if(purpose.match(/^\//)) // If it begins with a "/" (relative URL)
            if(purpose.match(/\?/)) // It already contains a query string
                my_spec = api_scheme + "://" + api_host + purpose + "&api_token=" + api_token;
            else
                my_spec = api_scheme + "://" + api_host + purpose + "?api_token=" + api_token;
        else
            my_spec = api_scheme + "://" + api_host + "/frontend/" + purpose + "?api_token=" + api_token;

        my_uri = Components.classes[@mozilla.org/network/simple-uri;1].createInstance(nsIURI);
        my_uri.spec = my_spec;
        proto = Components.classes["@mozilla.org/network/protocol;1?name="+api_scheme].getService(nsIProtocolHandler);

        return (proto.newChannel(my_uri));
    }
};

在规范中,您正在执行xss


虽然不同平台的实现略有不同,但一般的经验法则是相同的协议、相同的域、相同的端口。

在规范中,您正在执行xss

虽然不同平台的实现略有不同,但一般的经验法则是相同的协议、相同的域、相同的端口