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.
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!
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.
about:config -> security.fileuri.strict_Origin_policy -> false
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.
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
À 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.
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.