Nicole: outerHTML bei popup oder frame

Hallo erst mal ;-),

Man kann sich den Quelltext des aktuellen
Fensters problemlos anzeigen lassen.

bsp.
alert(documentElement.outerHTML);  // klappt problemlos

aber...
wenn ich das bei einem popup oder frame versuche, gehts nicht.

bsp.
xwin = window.open('test.html');
alert(xwin.documentElement.outerHTML);  // Klappt nicht

Warum [ mache ich einen Fehler ]?
Bzw. geht's doch irgendwie ?

--------------------------------------
*Natürlich könnte ich mit view-source arbeiten, aber dann bekomme
ich den Quelltext nicht als Variable, welche ich aber zur weiteren Verwendung benötige.

Gruss Nikki

  1. bsp.
    xwin = window.open('test.html');
    alert(xwin.documentElement.outerHTML);  // Klappt nicht

    Na ja, wie so oft habe ich nun stundenlang gesucht und
    wenn ich die Frage hier poste finde ich die Lösung kurz danach ;-(

    Also es muss heissen:
    alert(xwin.document.documentElement.outerHTML);

    aber.... Jetzt fängt mein eigentliches Problem erst an!

    Während das noch mit lokalen Seiten funktioniert, versagt das
    ganze bei URL's.

    Bsp:

    xwin = window.open('http://google.de');
    // Url öffnet wie geünscht in neuem Fenster.

    alert(xwin.document.documentElement.outerHTML);
    // Klappt nicht (js Fehlermeldung: Zugriff verweigert)

    Warum ?
    Vielleicht um den Zugriff auf fremde Seiten zu unterbinden ?
    Wenn ja, wo ist der Sinn , könnte ja auch die Seite besuchen und Quelltext anschauen.

    ----------------------------
    Die Situation ist Die:
    Ich habe viele Webseiten auf verschiedenen Servern.
    Nun möchte ich manchmal sehen wie einige kleine Veränderungen
    im Quelltext das Erscheinungsbild ändern.

    Dafür habe ich mir eigens einen Editor gebastelt.
    Natürlich könnte ich die quelltexte kopieren, einfügen , bearbeiten.
    Aber das ist nicht gerade was ich onthe fly nennen würde.

    Auch wenn ich andere das nutzen lasse, sollte es nicht mehr
    als einen Schritt geben, nämlich nur url eingegen , Fertig.

    Weiss Jemand Rat ?

    Gruss Nikki

    1. Hallo nicole.

      // Klappt nicht (js Fehlermeldung: Zugriff verweigert)

      Warum ?
      Vielleicht um den Zugriff auf fremde Seiten zu unterbinden ?
      Wenn ja, wo ist der Sinn , könnte ja auch die Seite besuchen und Quelltext anschauen.

      Siehe: [Wikipedia: Same_origin_policy]

      Einen schönen Montag noch.

      Gruß, Ashura

      --
      sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
      mathbr:del.icio.us/ mathbr:w00t/
    2. Moin!

      Während das noch mit lokalen Seiten funktioniert, versagt das
      ganze bei URL's.

      Die Same-Origin-Policy.

      Warum ?
      Vielleicht um den Zugriff auf fremde Seiten zu unterbinden ?
      Wenn ja, wo ist der Sinn , könnte ja auch die Seite besuchen und Quelltext anschauen.

      Richtig, aber Javascript kann ja nicht nur den Quelltext auslesen, sondern noch viele andere Dinge mehr. Selbst Nur-Lesen-Zugriff ist nicht unschädlich, wenn man beispielsweise durch ein Javascript auf einer bösen Seite feststellen könnte, welche anderen Seiten noch im Browser geöffnet sind - von dort eventuell eingetragenen Passworten oder der gezielten Veränderung dieser Seiten mal ganz abgesehen.

      Deshalb: Es ist vollkommen unmöglich, dagegen was zu tun - wenn doch, wäre es eine heftige Sicherheitslücke im Browser, die so schnell, wie möglich, geschlossen werden sollte.

      Weiss Jemand Rat ?

      Die Javascripte müssen vom gleichen Server kommen, wie die zu untersuchende URL. Das sollte ja bei Servern, die deinem Zugriff unterstehen, kein großes Problem sein.

      - Sven Rautenberg

      --
      My sssignature, my preciousssss!
      1. Hallo Sven,
        danke für die  Antwort ( so früh am Morgen ;-)

        Die Same-Origin-Policy.

        Deshalb: Es ist vollkommen unmöglich, dagegen was zu tun - wenn doch, wäre es eine heftige Sicherheitslücke im Browser, die so schnell, wie möglich, geschlossen werden sollte.

        »»

        Hmm (*grübel), das versthe ich nicht ganz.
        Duch das Anschauen einer Webseite ob direkt oder indirekt
        kann ich doch dort nichts verändern, oder ?

        Sicherheitslücke ? Nein, denn ich kann das ganze ja auch auf
        andere Weise mit gleichem Resultat erzielen.

        bsp.
        1. durch PHP (fopen,file,file_get_contents,usw....)
        2. Manuell (seite besuchen, quelltext kopieren, im Editor einfügen)

        Also warum sollte das mit Javascript gefährlicher sein ?

        Die Javascripte müssen vom gleichen Server kommen, wie die zu untersuchende URL. Das sollte ja bei Servern, die deinem Zugriff unterstehen, kein großes Problem sein.

        Natürlich wäre das viel mehr Aufwand, da würde sich eher die PHP
        Methode auszeichnen, aber genau da ist das Problem.
        Ich wollte hierbei eine Betriebsunabhängige und lokal arbeitende
        Möglichkeit haben, deshalb habe ich mich für Javascript entschieden.

        Ich habe auch schon eine Lösung, aber schön finde ichg es nicht,
        allerdings zeigt es dir vielleicht wie sinnlos diese Restriktion ist.

        Meine Seite
        => Url Eingabe feld
        => Webseite ( auch z.B. google) wird in Iframe angezeigt
        => Quelltext anzeigen => kopieren => Textarea einfügen
        => FERTIG (Editor arbeitet )

        Was mich ärgert ist, dass ich nun Browserabhängig den Quelltext anzeigen lassen muss, aber na ja wenns denn sooo gefährlich ist.

        Gruss Nikki

        1. Sicherheitslücke ? Nein, denn ich kann das ganze ja auch auf
          andere Weise mit gleichem Resultat erzielen.

          bsp.

          1. durch PHP (fopen,file,file_get_contents,usw....)
          2. Manuell (seite besuchen, quelltext kopieren, im Editor einfügen)

          Also warum sollte das mit Javascript gefährlicher sein ?

          Weil JS bei dir im Browser ausgeführt wird.

          Es geht nicht um den Zugang zum Quelltext, sondern um den Zugriff auf die Seite. Das ist eine Lücke die in den Anfangszeiten von JS ausgenutzt wurde.
          Die böse Seite erzeugt ein Frameset, indem nur eine Seite angezeigt wird, wo du dich einloggen musst, z.b. Hotmail damals, im Frameset ist ein JS das auf die Hotmail Seite zugreifen darf und baut einen onsubmit Handler ein. Dann ist es ein einfaches deinen Usernamen und Kennwort an ein eigenes Skript zu schicken ohne das du es merkst.

          Ich habe auch schon eine Lösung, aber schön finde ichg es nicht,
          allerdings zeigt es dir vielleicht wie sinnlos diese Restriktion ist.

          Meine Seite
          => Url Eingabe feld
          => Webseite ( auch z.B. google) wird in Iframe angezeigt
          => Quelltext anzeigen => kopieren => Textarea einfügen
          => FERTIG (Editor arbeitet )

          Was mich ärgert ist, dass ich nun Browserabhängig den Quelltext anzeigen lassen muss, aber na ja wenns denn sooo gefährlich ist.

          wie gesagt, nicht das Quelltext anzeigen, sondern der Zugriff auf die Inhalte ist gefährlich. Vermutlich haben sich, als das noch ging, die Leute auch geärgert als ihr Account geknackt wurde.

          Jetzt ist die Frage was wichtiger ist der Ärger vom Webmaster, der es möglichst bequem haben will oder vom Nutzer deine seine Daten geschützt haben möchte.

          Struppi.