Je suis en train d'écrire un module complémentaire FireFox qui affiche les pages Web de mon serveur en tant que panneaux de contrôle et d'information. Ces panneaux ont été écrits et fonctionnent dans des URL normales, mais quand j'essaye d'y accéder par le biais d'un protocole personnalisé (donc c'est sur :, juste myplugin: settings) chaque XMLHttpRequest retourne vide comme si je faisais du XSS. Je sais que les données passent - les requêtes sont valides, acceptées par le serveur, et tcpdump dit qu'elles arrivent sur ma machine. De toute évidence, est donc ici, il a quelque chose à voir avec la mise en œuvre du protocole sur mesure la partie pertinente que:Texte de réponse vide dans XMLHttpRequest lors de l'exécution dans un protocole personnalisé dans FireFox?
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));
}
};