Website reagiert in iframe anders

F

fleur

Gast
Mein Problem ist folgendes:
 
Zuletzt bearbeitet von einem Moderator:
Code beispiel: Wie genau änderst du das Attribut? Also wie sieht dein Javascript-Selector aus?
 
Hast du mit Console.log() mal probiert, ob dein Javascript überhaupt ausgeführt wird im IFrame, oder gibt die JavaScript-Konsole vlt. sogar direkt Fehlermeldungen aus, die darauf zurückschließen lassen, dass aktives Scripting im IFrame nicht erlaubt ist?
 
"SecurityError: Permission denied to access property "Navigation" on cross-origin object"

Und genau da ist das Problem. Er darf nicht auf Frames zugreifen, innerhalb eines IFrames. Um zu verhindern, dass aus dem IFrame ausgebrochen wird. Das kannst du vermutlich nur umgehen, in dem du CORS für den einbindenden Server aktivierst:

https://de.wikipedia.org/wiki/Cross-Origin_Resource_Sharing

Alternativ: die WebApp von Frames umstellen auf etwas zeitgemäßes... Frames sollte man schon seit 15 Jahren meiden ^^
 
Wie bzw. wo aktiviere ich CORS? Kann mir dabei jemand helfen? Das iframe beziehe ich über den Apache Tomcat
 
XML:
<filter>
  <filter-name>CorsFilter</filter-name>
  <filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
</filter>
<filter-mapping>
  <filter-name>CorsFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

Stimmt das so? In welche web.XML-Datei muss ich das schreiben? In die von xampp/Tomcat/config/ oder direkt in die Datei, vom als iframe verwendeten Projekt? Die dritte Möglichkeit wäre noch es in der web.xml Datei der neuen Webapplikation zu ändern, die dann nachher das iframe verwendet.
 
Zuletzt bearbeitet von einem Moderator:
Die Anpassung kannst du halten wie ein Dachdecker: Die entfernte Ressource, die in das iFrame geladen werden soll, muss das "Allow-Origin" auf die URL der Seite setzen, die versucht die entfernte Ressource zu laden, in deinem Fall theoretisch auf "http://localhost", das funktioniert aus Sicherheitsgründen jedoch nicht mit "localhost" (zumindest in Chrome, da muss schon eine "richtige" Domainangabe her), oder eben auf *, dann dürfen alle Seiten die entfernte Ressource laden und dessen aktive Inhalte ausführen.
 
Ich habe den Fehler jetzt anders umschifft. Rufe die neue Webapplikation einfach auch über localhost:8080/… auf (so wird ja mein iframe auch aufgerufen). Jetzt besitzen beide ja dieselbe Domain.
 
Zuletzt bearbeitet von einem Moderator:
Zurück
Oben