web-dev-qa-db-fra.com

Désactiver les règles d'origine de Firefox

Je développe un outil de recherche local qui nécessite de désactiver la même politique d'origine de Firefox (en termes d'accès aux scripts, les requêtes interdomaines ne me concernent pas vraiment).

Plus précisément, je souhaite que les scripts du domaine hôte puissent accéder à des éléments arbitraires dans tous les iframes incorporés dans la page, quel que soit leur domaine.

Je suis au courant des questions et réponses précédentes qui mentionnaient l'extension CORF FF, mais ce n'est pas ce dont j'ai besoin, car elle ne permet que CORS, mais pas l'accès aux scripts.

Si cela ne peut pas être fait facilement, j'apprécierais également les informations qui me renvoient à une partie spécifique du code FF src que je peux modifier pour désactiver SOP, afin de pouvoir recompiler FF.

101
Yuchen Zhou

Il existe une extension Firefox qui ajoute les en-têtes CORS à toute réponse HTTP fonctionnant sur le dernier Firefox ( build 36.0.1 ) publié 5 mars 2015 . Je l'ai testé et cela fonctionne à la fois sur Windows 7 et Mavericks. Je vais vous guider à travers les étapes pour le faire fonctionner.

1) Obtenir l'extension

Vous pouvez soit télécharger le fichier xpi à partir de ici (auteur construit) ou de ici (miroir, peut ne pas être mis à jour).

Ou téléchargez le fichiers depuis GitHub. Maintenant, c'est aussi sur Firefox Marketplace: Téléchargez ici . Dans ce cas, l'addon est installé une fois que vous avez cliqué sur installer et vous pouvez passer à l'étape 4.

Si vous avez téléchargé le fichier xpi, vous pouvez passer à l’étape 3. Si vous avez téléchargé le fichier Zip depuis GitHub, passez à l’étape 2.

2) Construire le xpi

Vous devez extraire le fichier Zip, accéder au dossier "cors-partout-firefox-addon-master", sélectionner tous les éléments et les compresser. Ensuite, renommez le zip créé en * .xpi

Remarque: Si vous utilisez l'interface graphique OS X, il est possible que certains fichiers cachés soient créés. Vous aurez donc intérêt à utiliser la ligne de commande.

3) Installation de xpi

Vous pouvez simplement faire glisser et déposer le fichier xpi sur firefox, ou aller à: "à propos de: addons", cliquer sur le rouage situé dans le coin supérieur droit et sélectionner "installer un complément à partir d'un fichier", puis sélectionner le fichier .xpi. Maintenant, redémarrez Firefox.

4) Le faire fonctionner

Maintenant, l'extension ne fonctionnera pas par défaut. Vous devez faire glisser l'icône d'extension dans la barre d'extension, mais ne vous inquiétez pas. Il y a des photos!

  • Cliquez sur le menu Firefox
  • Cliquez sur Personnaliser

p1

  • Faites glisser Corse au bar
  • Maintenant, cliquez sur l'icône. Quand il est vert, les en-têtes CORS seront ajoutés à toute réponse HTTP.

p2

5) Tester si cela fonctionne

jQuery

$.get( "http://example.com/", function( data ) {
  console.log (data);
});

JavaScript

xmlhttp=new XMLHttpRequest();

xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4) {
        console.log(xmlhttp.responseText);
    }
}

xmlhttp.open("GET","http://example.com/");
xmlhttp.send();

6) Considérations finales

Notez que https to http n'est pas autorisé .

Il y a peut-être un moyen de contourner le problème, mais cela se cache derrière la portée de la question.

79
about:config -> security.fileuri.strict_Origin_policy -> false
33
Niklas

J'ai réalisé que ma réponse la plus ancienne est rejetée, car je n'ai pas précisé comment désactiver spécifiquement la même politique d'origine de FF. Ici, je vais donner une réponse plus détaillée:

Attention: Ceci nécessite une recompilation de FF, et la nouvelle version compilée de Firefox ne pourra plus activer SOP .

Consultez le code source de Firefox de Mozilla, recherchez nsScriptSecurityManager.cpp dans le répertoire src. Je vais utiliser celui cité ici à titre d'exemple: http://mxr.mozilla.org/aviarybranch/source/caps/src/nsScriptSecurityManager.cpp

Accédez à la fonction d'implémentation nsScriptSecurityManager :: CheckSameOriginURI, qui correspond à la ligne 568 à la date du 03/02/2016.

Faites que cette fonction retourne toujours NS_OK.

Cela désactivera SOP pour de bon.

La réponse du navigateur de @Giacomo devrait être utile à la plupart des gens et j’ai accepté cette réponse; toutefois, pour mes besoins de recherche personnels (TL n’expliquera pas ici), elle ne suffit pas et j’imagine que d’autres chercheurs devront peut-être faire ce qui suit. J'ai fait ici pour tuer complètement SOP.

8
Yuchen Zhou

J'ai écrit un add-on pour surmonter ce problème dans Firefox (Chrome, la version Opera sera bientôt disponible). Il fonctionne avec la dernière version de Firefox, avec une belle interface utilisateur et supporte JS regex: https://addons.mozilla.org/en-US/firefox/addon/cross-domain-cors

enter image description here

8
Tan Mai Van

À partir du septembre 2016 , cet addon est le meilleur pour désactiver CORS : https://github.com/fredericlb/Force-CORS/releases

Dans le panneau d'options, vous pouvez configurer l'en-tête à injecter et le site Web spécifique pour l'activer automatiquement.

enter image description here

3
Khado Mikhal

L'addon cors-partout fonctionne pour moi jusqu'à Firefox 68, après 68, je dois ajuster 'privacy.file_unique_Origin' -> false (par open 'about: config') pour résoudre ' CORS request not HTTP 'pour la nouvelle règle CORS de même origine introduite.

0
ob.yann