Frame verweigert Zugriff nach 'Server nicht gefunden'
Frank Wolf
- javascript
0 wahsaga0 Frank Wolf0 wahsaga
0 MudGuard
Hallo an alle IE-Kenner/Liebhaber,
kann einer folgendes Problem erklären oder lösen:
Mein IE 6 unter windows 2000 erlaubt es nicht, mit Javascript in einen Frame zu schreiben, der vorher einen toten Server anzeigen sollte. (Dort soll eigentlich dann eine sinnvolle kleine Meldung erscheinen). IE erstellt aber in diesem Fall eine Seite, die weitere Zugriffe verweigert. Es funktioniert übrigens, wenn nur die Datei fehlt, der Server ab 'da' ist.
Falls jemand eine Idee hat - danke!
Frank
Hier die Seite:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><title>Meine Fenster</title>
<script type="text/javascript">
<!--
function testantwort(){
unten.document.close();
if (!unten.document.getElementById("antwort")){
// index.htm enthält einfach ein div mit id="antwort"
unten.document.open();
unten.document.write("Server tot");
unten.document.close();
}
}
//-->
</script>
<frameset rows="92,*" >
<frame name="kopf" src="kopf.htm">
<frame name="unten" src="http://www.wasauchimmertot.de/index.htm">
</frameset>';
</html>";
Hier die Datei kopf.htm:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body>Leer
<script type="text/javascript">
<!--
window.setTimeout("parent.testantwort()",5000);
//-->
</script>
</body>
</html>
hi,
kann einer folgendes Problem erklären oder lösen:
erklären ja, lösen nein.
Mein IE 6 unter windows 2000 erlaubt es nicht, mit Javascript in einen Frame zu schreiben, der vorher einen toten Server anzeigen sollte.
du versuchst vorher eine seite in den frame zu laden, die unter einer anderen domain liegt. deshalb hast du mit javascript anschliessend keinen zugriff mehr auf das dokument in diesem frame.
dies ist im sicherheitskonzept von javascript so vorgesehen, dass "cross site scripting" oder auch "cross domain scripting" _nicht_ erlaubt ist.
gruss,
wahsaga
Hi, wahsaga,
du versuchst vorher eine seite in den frame zu laden, die unter einer anderen domain liegt. deshalb hast du mit javascript anschliessend keinen zugriff mehr auf das dokument in diesem frame.
Diese Vermutung stimmt so nicht. Es ist der gleiche Server, der auch das Frameset geliefert hat. Ich habe ihn nur zwischendurch abgeschaltet, um die Reaktion der Seite (Online-Prüfung mit nervösen Prüflingen) auf eine Unterbrechung der Internetverbindung zu simulieren/abzufangen.
Der IE scheint dann aber in der Tat eigenmächtig die Herkunft des Frames zu übernehmen, so dass auch der Parent keinen Zugriff mehr per Javascript hat.
Grüße
Frank
hi,
Diese Vermutung stimmt so nicht. Es ist der gleiche Server, der auch das Frameset geliefert hat.
sorry, das konnte ich auf grund deiner beschreibung nicht herauslesen, zumal du auch noch ein beispiel gebracht hast, welches den eindruck einer seite von einer fremden domain nahe legt,
<frame name="kopf" src="kopf.htm">
<frame name="unten" src="http://www.wasauchimmertot.de/index.htm">
gruss,
wahsaga
Hi,
Hallo an alle IE-Kenner/Liebhaber,
bin ich zwar nicht, das "Problem" ist aber nicht IE-spezifisch.
Mein IE 6 unter windows 2000 erlaubt es nicht, mit Javascript in einen Frame zu schreiben, der vorher einen toten Server anzeigen sollte. (Dort soll eigentlich dann eine sinnvolle kleine Meldung erscheinen). IE erstellt aber in diesem Fall eine Seite, die weitere Zugriffe verweigert. Es funktioniert übrigens, wenn nur die Datei fehlt, der Server ab 'da' ist.
Es greift die Same-Origin-Policy - per Javascript kann nur dann auf einen Frame zugegriffen werden, wenn die darin befindliche Seite vom selben Server stammt wie die Seite, in der sich das Script befindet.
Wenn nur die Seite nicht vorhanden ist, aber der Server schon, stammt die Fehlerseite vom Server.
Wenn der Server nicht erreichbar ist, kommt die Fehlerseite NICHT vom Server (wie auch - der ist ja nicht da), sondern aus dem Browser-Bauch. Sie stammt also nicht vom selben Server wie Deine Seite mit dem Script.
cu,
Andreas