jsp:forward aus iframe heraus

Von: , Frage gestellt am Di, 14. Dez 2004

Hallo.

Ich stehe momentan vor dem Problem, dass ich aus einem iframe heraus ein jsp:forward machen möchte. Grundsätzlich geht das, aber es wird dann nur im iframe ge"forward"et. Ich möchte aber gerne den forward auf das parent-Frame machen, damit dort eine neue Seite geladen wird.

Das Attribut "target" gibt es im jsp:forward aber nicht.

2004-12-14 11:27:00 StandardWrapperValve[jsp]: Servlet.service() for servlet jsp threw exception
org.apache.jasper.compiler.ParseException: /frame2.jsp(15,9) Forward: Invalid attribute, target


Was hab ich für Alternativen? Javascript wäre eine sehr schlechte Alternative, gibts noch andere Möglichkeiten?

Bernd

3 Antworten zu dieser Frage

  1. Antwort von nach einem Tag 0 hilfreich
    Re: jsp:forward aus iframe heraus

    Hi. Ich stehe momentan vor dem Problem, dass ich aus einem iframe
    heraus ein jsp:forward machen möchte. Grundsätzlich geht das,
    aber es wird dann nur im iframe ge"forward"et. Ich möchte aber
    gerne den forward auf das parent-Frame machen, damit dort eine
    neue Seite geladen wird.
    Da hast du generell ein Designproblem deiner Applikation. Forwards gelten ja nur für einen Request - Und das ist immer die aktuell aufgerufene Seite - Also in deinem Falle die Seite im IFrame.

    Da gibt es zumindestens auf Serverseite keine MagicForwardFrameMethode, in der du das komplette Client-seitige Frameset neu laden kannst. Das Attribut "target" gibt es im jsp:forward aber nicht.
    Das mußt du HTML-Seitig lösen. Dh. Der Link, der dem request mit dem jsp:forward vorangeht, muß als target _top oder _parent haben. Was hab ich für Alternativen? Javascript wäre eine sehr
    schlechte Alternative, gibts noch andere Möglichkeiten?
    Siehe oben - Den auslösenden Link das richtige Target geben. Solltest du den forward nicht immer auslösen (Z.B. wenn du draufkommst, dass das eine geschützte Seite ist und der User nicht eingeloggt), wirst du ohne gröbere Umgestaltung deiner Webseite nicht ohne Javascript auskommen, welches den Frame neu lädt.

    Allerdings können da einige Sicherheitsrelevante Themen aufkommen:
    Z.B.: Liegt die Seite, auf die geforwardet wurde, auf der gleichen Domain wie das Frameset (Sonst kannst du das Javascript reloading vergessen)

    Schreib doch einfach mal, was du genau machen möchtest und warum ein Iframe das ganze Frameset forwarden soll - Vielleicht finden wir ja eine elegantere Lösung ;-)

    mfG,

    J.P.Jarolim

    • Antwort von nach 2 Tagen 0 hilfreich
      hat sich erledigt...

      Da hast du generell ein Designproblem deiner Applikation.
      Naja, was Kunden nicht alles wünschen... :-/
      Ich hab es jetzt anders gemacht. Auch keine 100%ige Lösung, aber es geht zumindest. (Daten in der Session Speichern und in der Parent-Seite bei Bedarf auslesen) Allerdings können da einige Sicherheitsrelevante Themen
      aufkommen:
      Sicherheitstechnisch gibt es da keine Bedenken. Alle Dateien liegen im selben Verzeichnis und sind durch ein login direkt von Tomcat (über LDAP) geschützt. Ausserdem ist es eine Intranet-Anwendung, die nur im lokalen (Firmen-)Netz erreichbar ist.

      Bernd

      • Antwort von nach 2 Tagen 0 hilfreich
        Re: hat sich erledigt...

        Hi. Naja, was Kunden nicht alles wünschen... :-/
        ;-) Ich hab es jetzt anders gemacht. Auch keine 100%ige Lösung,
        aber es geht zumindest. (Daten in der Session Speichern und in
        der Parent-Seite bei Bedarf auslesen)
        Es leben die Workarounds ;-) Sicherheitstechnisch gibt es da keine Bedenken. Alle Dateien
        liegen im selben Verzeichnis und sind durch ein login direkt
        von Tomcat (über LDAP) geschützt. Ausserdem ist es eine
        Intranet-Anwendung, die nur im lokalen (Firmen-)Netz
        erreichbar ist.
        Neee - So hab ich das nicht gemeint ;-) Gemeint war Javascript + Sicherheitszonenmodell der geläufigsten Browser: Du baust dir z.B. ein Frameset (bzw. Page mit Iframe) auf der einen Domain und referenzierst in dem frame eine Seite auf einer anderen Domain. Die Seite der anderen Domain kann zwar ein Script enthalten, das versucht, das ganze Frameset neu zu laden (Was weis ich zB document.location.href='/andere/seite.html'). Das quittiert dir zumindestens der IE mit einem "Erlaubnis verweigert" Javascript Error because of the "Sicherheit" im Zonenmodell.

        soderla - Aber du hast eh schon eine Lösung.

        mfG,

        J.P.Jarolim

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!