auf neue Dokumente in anderen Fenstern zugreifen
Andreas Lindig
- dhtml
Hallo Forum,
wenn ich von Fenster A aus ein Fenster B öffne (window.open) und und von diesem aus wiederum in Fenster A mit location.href ein neues Dokument lade, dann kann ich auf das neue Dokument nicht zugreifen. Mozilla meldet: "uncaught exeption: Die Erlaubnis für das Lesen der Eigenschaft HTMLdocument.getElementsByTagName wurde verweigert".
Das bekomme ich allerdings nur online. Bei dem gleichen Vorgang über meinen lokalen Server passiert das nicht.
Was kann ich da tun?
Gruß, Andreas
你好 Andreas,
wenn ich von Fenster A aus ein Fenster B öffne (window.open) und und von
diesem aus wiederum in Fenster A mit location.href ein neues Dokument
lade, dann kann ich auf das neue Dokument nicht zugreifen. Mozilla
meldet: "uncaught exeption: Die Erlaubnis für das Lesen der Eigenschaft
HTMLdocument.getElementsByTagName wurde verweigert".
Hat sich zufaellig die Domain geaendert?
Was kann ich da tun?
Wenn sich die Domain geaendert hat: gar nichts.
Whatever, du solltest schon ein Beispiel oder den Code veroeffentlichen,
sonst muss man im Dunklen herumstochern.
再见,
CK
Hallo Christian,
Hat sich zufaellig die Domain geaendert?
ja.
Was kann ich da tun?
Wenn sich die Domain geaendert hat: gar nichts.
wie kommt das? und wäre es vielleicht eine Möglichkeit das Ganze in ein stehendes Frameset zu packen, wo die äußere Domain immer gleich bleibt? Ich habe es gerade mal mit einer anderen Datei im gleichen Verzeichnis (also gleiche domain) getestet: das geht.
Whatever, du solltest schon ein Beispiel oder den Code veroeffentlichen,
sonst muss man im Dunklen herumstochern.
Hier ein Beispiel: in die Seite doppelklicken und im geöffneten Palettenfenster mit dem file-Upload Button eine neue Adresse einladen. Wenn sie geladen ist kannst Du auf "einlesen" klicken.
Gruß, Andreas
你好 Andreas,
Was kann ich da tun?
Wenn sich die Domain geaendert hat: gar nichts.wie kommt das?
Das ist eine Sicherheitsvorkehrung der Browser um zu unterbinden, dass du einfach so in fremden Seiten herum-JavaScript-est, auf Kosten der User.
Du koenntest ja z. B. eine Bestellung von Amazon auf Kosten des Users
machen, gaebe es diese Vorkehrung nicht.
und wäre es vielleicht eine Möglichkeit das Ganze in ein stehendes
Frameset zu packen, wo die äußere Domain immer gleich bleibt?
Nein, vergiss es. Du hast auf Fenster, in denen die Domain gewechselt hat,
keinen Zugriff mehr. Aus.
Ich habe es gerade mal mit einer anderen Datei im gleichen Verzeichnis
(also gleiche domain) getestet: das geht.
Solange die Domain gleich bleibt greift diese Vorkehrung auch nicht.
再见,
CK
Hallo Andreas,
Was kann ich da tun?
Wenn sich die Domain geaendert hat: gar nichts.wie kommt das?
Das ist die sogenannte »Same Origin Policy«. Stell Dir vor, Du könntest ein Fenster per JS öffnen, in dem Du den URL einer Site lädst, wo ein Benutzer gerade eingeloggt ist. Du könntest so sensible Daten auslesen. Deswegen darfst Du mit JS nur auf die gleiche Domain zugreifen und Basta.
und wäre es vielleicht eine Möglichkeit das Ganze in ein stehendes Frameset zu packen, wo die äußere Domain immer gleich bleibt?
Nein. Die »Same Origin Policy« gilt sowohl für Frames als auch für Fenster als auch für sonstige Konstrukte. Wenn Du eine Möglichkeit findest, die »Same Origin Policy« alleine durch JavaScript zu umgehen, dann hast Du eine gravierende Sicherheitslücke in den betroffenen Browsern gefunden.
Ich habe es gerade mal mit einer anderen Datei im gleichen Verzeichnis (also gleiche domain) getestet: das geht.
Ja.
Viele Grüße,
Christian
Hallo Christian,
Wenn Du eine Möglichkeit findest, die »Same Origin Policy« alleine durch JavaScript zu umgehen, dann hast Du eine gravierende Sicherheitslücke in den betroffenen Browsern gefunden.
hehe, die behalte ich dann aber für mich und wickle erstmal ein paar Bestellungen ab ;-)
Gruß, Andreas
hmhm..., das schmeißt mein ganzes Konzept übern Haufen. Gibt es denn irgendeine Möglichkeit an den HTML-Quelltext einer Fremden Seite zu kommen? Also, es könnte ja auch mit PHP sein, sodaß ich den Quelltext auf den eigenen Server kopieren kann oder so... Der Zweck ist, daß man in dem genannten Beispiel eine beliebige Seite einladen und bearbeiten kann - natürlich nur die Kopie. Um das Original geht es ja gar nicht. Man muß am Ende einen Link verschicken können - in dem steht dann die Adresse des Programms (Farbfinder), als Parameter die Adresse der bearbeiteten Seite und eine Reihe von Name=Wert-Paaren, welche Farben welchen Objekten zugewiesen wurden. Der Empfänger kann mit diesem Link direkt das Ergebnis sehen und kann, da der Link primär auf das JS-Programm zeigt, gleich weiterarbeiten und wieder Veränderungen durchführen.
Das wäre sehr praktisch für den Austausch unter Webdesignern.
Gruß, Andreas
你好 Andreas,
hmhm..., das schmeißt mein ganzes Konzept übern Haufen. Gibt es denn
irgendeine Möglichkeit an den HTML-Quelltext einer Fremden Seite zu
kommen? Also, es könnte ja auch mit PHP sein, sodaß ich den Quelltext
auf den eigenen Server kopieren kann oder so...
Klar kannst du den Source per PHP absaugen. Dauert halt einfach etwas, und
verursacht dir Traffic. Und du darfst nicht vergessen, auch referenzierte
Dateien (Bilder, CSS-Files, etc) mitzusaugen.
再见,
CK
Klar kannst du den Source per PHP absaugen.
äh, ja mir fehlt da der Denkansatz. Normalerweise gebe ich ja mit PHP nur was aus oder leite irgendwohin weiter. Wenn ich das Dokument auslesen will, muß ich es doch erstmal irgendwo reinladen oder?
Gruß, Andreas
你好 Andreas,
Klar kannst du den Source per PHP absaugen.
äh, ja mir fehlt da der Denkansatz. Normalerweise gebe ich ja mit PHP
nur was aus oder leite irgendwohin weiter. Wenn ich das Dokument auslesen
will, muß ich es doch erstmal irgendwo reinladen oder?
Ja. Wenn dein Provider allow_url_fopen an hat, dann kannst du fopen benutzen,
um die Seite (und die anderen Ressourcen) einzulesen. Ansonsten musst du dir
wohl mit fsockopen einen abwurschteln.
再见,
CK
Wenn dein Provider allow_url_fopen an hat,
jo.
dann kannst du fopen benutzen,
um die Seite (und die anderen Ressourcen) einzulesen.
das ist ja voll einfach :-) das geht sogar mit file().
dankeschön
Gruß, Andreas
Hallo Forum,
wenn ich von Fenster A aus ein Fenster B öffne (window.open) und und von diesem aus wiederum in Fenster A mit location.href ein neues Dokument lade, dann kann ich auf das neue Dokument nicht zugreifen. Mozilla meldet: "uncaught exeption: Die Erlaubnis für das Lesen der Eigenschaft HTMLdocument.getElementsByTagName wurde verweigert".
Dann hast Du vermutlich versucht, auf ein fremdes Dokument zuzugreifen.
Das bekomme ich allerdings nur online. Bei dem gleichen Vorgang über meinen lokalen Server passiert das nicht.
Wie gesagt: fremdes Dokument. Was würdest Du davon halten, wenn jemand Deine Website auf diese Weise öffnen läßt und sie dann per Javasript beliebig manipuliert, Links ummodelt und Inhalte verändert?
Was kann ich da tun?
Nachdenken.