Firefox ohne gleiche Ursprungsrichtlinie

3438
Knuwgljung

Ich habe ein zunehmend frustrierendes Problem mit der Firefox-Implementierung derselben Ursprungspolitik.

Ich entwickle ein integriertes System mit Touchscreen-Unterstützung, und wir haben die Möglichkeit, Webseiten an verschiedenen Stellen auf dem Bildschirm in Iframes zu laden. Die Webseiten können jede Art von Webseite von jeder Art von Domäne und Ort (Google, Yahoo, Intranet-Seiten usw.) sein. Hierin liegt mein Problem.

Ich muss in der Lage sein, dem iframe ein onclick -Ereignis hinzuzufügen, das mir die ID des iframe (oder eines anderen eindeutigen Bezeichners) als Antwort gibt. Dies sagt mir, dass eine Aktivität (Web-Browsing) auf dem Iframe läuft und dass der Iframe nicht neu geladen werden sollte (die Seiten sind auf ein festes automatisches Aktualisierungsintervall festgelegt, das bei Aktivität unterbrochen werden sollte).

Ich habe so gut wie alles gelesen, was Google mir zurückgibt (aber ich wäre in dieser Angelegenheit gerne widerlegt), und ich habe festgestellt, dass dies die beste Lösung (unter vielen anderen) ist:

<iframe src='http://google.com' id='iframe1' onload='netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserWrite"); this.contentWindow.document.addEventListener("click", function(event), false)'></iframe> 

Dies gibt mir nur die reguläre Erlaubnis für http: // localhost, um die Eigenschaft Window.document von http://google.com zu erhalten

Ich weiß, warum ich diese Fehlermeldung bekomme, und meine Frage ist einfach. Wie entferne ich es?

Es ist ein integriertes System, ich kann Firefox aus dem Quellcode kompilieren, ich kann den Quellcode bei Bedarf bearbeiten, ich kann prefs.js ändern usw., aber ich muss Firefox verwenden (ich weiß, dass alle anderen vernünftigen Webbrowser einen schönen Befehlszeilenschalter haben um es auszuschalten ...), aber wir haben eine (ziemlich) enge Integration mit der Firefox-Plattform, die sich nur schwer entfernen lässt.

Derzeit verwenden wir Firefox v.3.5.16 (ich weiß, es ist EOL, wir werden es ein anderes Mal aktualisieren) auf einer Debian-Squeeze-Plattform. Bei Bedarf kann ich auf eine neuere Firefox-Version upgraden, aber aus meiner Sicht scheint es in dieser Angelegenheit noch schlimmer zu sein.

TL; DR Helfen Sie mir, die gleiche Ursprungsrichtlinie zu schließen, auf jede Weise, die in Firefox 3.5.16 möglich ist, für eine integrierte Plattform, die Code durch domänenübergreifende Iframes ändern muss.

4
Oh, und nur um es zu klären, ** muss nur in Firefox gearbeitet werden. Gerade jede Lösung würde zu diesem Zeitpunkt ausreichen! Knuwgljung vor 12 Jahren 0
[Kann ich SOP (Same Origin Policy) für jeden Browser für die Entwicklung deaktivieren?] (Http://stackoverflow.com/questions/330427/can-i-disable-sop-same-origin-policy-on-any-browser- for-development) und höchstwahrscheinlich: [XMLHttpRequest-Sendefunktion löst 0x80004005-Ausnahme aus, wenn sie ab Gecko 5 aus der lokalen HTML-Datei aufgerufen wird, auch wenn UniversalBrowserRead angefordert wurde] (https://bugzilla.mozilla.org/show_bug.cgi?id=667312) Bobby vor 12 Jahren 0
Mein mitgeliefertes Codebeispiel verwendet den ersten Link (und ich habe das CORS-Addon ausprobiert), es funktioniert immer noch nicht! Der andere Link ist für Firefox 5, wo enablePrivilege entfernt wurde! Knuwgljung vor 12 Jahren 0

1 Antwort auf die Frage

2
Knuwgljung

Ich fühle mich ziemlich dumm.

Es funktioniert, wenn Sie UniversalXPConnect anstelle von UniversalBrowserWrite verwenden.

Zum Beispiel: netscape.security.PrivilegeManager.enablePrivilege ("UniversalXPConnect");

Sie können this.id oder this.parentNode.id nicht verwenden, da dies immer noch einen (anderen) Zugriffsfehler gibt. Um dieses Problem zu beseitigen, speichern Sie es zuerst in einer temporären Variablen:

onload='var tempstuff = this.id; this.contentWindow.document.addEventListener("click", function(event), false)' 
Dies beantwortet meine eigene Frage, es sind keine weiteren Antworten erforderlich! Wenn jemand diese Frage als beantwortet markieren könnte, wäre ich dankbar (ich kann meine eigene Antwort zwei Tage lang nicht markieren). Knuwgljung vor 12 Jahren 0
Dann musst du warten, ich kann es auch nicht markieren;) Huygens vor 12 Jahren 0
Funktioniert das noch? Ich glaube nein. erm3nda vor 9 Jahren 0
Wenn ich mich recht erinnere, verwenden wir diese Methode immer noch mit Firefox 33, daher sollte sie noch ordnungsgemäß funktionieren. Knuwgljung vor 9 Jahren 0