2009-09-23 8 views
0

Je travaille sur une extension FireFox qui utilise XMLHttpRequest pour récupérer des données d'un serveur distant.XMLHttpRequest, extension FireFox et code d'erreur '1012' (Accès refusé)

Le code javascript est la suivante:

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); 
} 

Je reçois l'erreur suivante dans la console 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"]

Le PostBackUrl peut être quelque chose (à des fins de test, je me sers locale machine [127.0.0.1] et un serveur assis sur mon réseau local [donc 192.168. *. *], les deux sur le port 8088) car il est entré par l'utilisateur.

Il semble que je trébuche sur les mesures de sécurité XSS. Comment pourrais-je contourner cela?

Quelques détails supplémentaires:

  • FireFox 3.5.3 (il est acceptable de limiter à ce et plus récent)
  • l'extension Unsigned (j'autosignée, mais qui est assez embêtant et les gains vous rien pour autant que je peux dire)
  • J'ai un contrôle complet sur le serveur distant (son d'une configuration personnalisée, pas Apache ou IIS, écrit en C# pour .NET 3.5)
+0

qui est la ligne 51? – luiscubal

+2

Ce serait celui marqué // C'est la ligne # 51 –

Répondre

3

Tout d'abord, si vous appelez cela à partir de chrome, votre code ne devrait pas toucher les contrôles intersites. Le code Chrome est autorisé à faire XHR inter-site par défaut. Appelez-vous cela directement à partir de chrome, ou est-ce que vous l'injectez dans le contenu d'une manière ou d'une autre? http://mxr.mozilla.org/mozilla-central/source/content/base/src/nsXMLHttpRequest.cpp#1736

En second lieu, il n'y a que trois endroits dans le code XHR qui renvoient ce code d'erreur spécifique: 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

Ils ont tous à voir avec les demandes de contrôle en amont: http://www.w3.org/TR/access-control/#preflight-request

Est votre serveur en obtient un, et le manipule mal?

+0

J'omettais l'en-tête 'Access-Control-Request-Method'. –

Questions connexes