Hallo Linuchs,
ich war am verlängerten Wochenende weg vom PC und konnte das Thema deshalb nicht bearbeiten.
Habe vor 10, 12 Jahren eine eigene Lösung gebastelt
Was damals vermutlich wegen der IE-Quirks nötig war.
Das klappt doch mit remso im iframe auch, wieso jetzt nicht?
Das klappt mit shanty-fsd.de im Parent und remso.eu im iframe? Inwiefern? Dort finde ich auf den ersten Blick keinen postMessage vom iframe zum Frame-Host und im Frame-Host auch keine Registrierung auf das message-Event.
Ich finde im Netz allerdings auch die Hypothese (von 2013), dass ein unterschiedlicher Origin bei gleichem Host (also gleicher Empfänger-IP) nicht beachtet würde. Was damals möglicherweise ein Bug im IE war, mein eigener Versuch mit Edge bestätigt das nicht.
Die console-Meldung wird nicht angezeigt. Auch keine Fehlermeldung
Bei mir kommt aber eine Fehlermeldung:
Hostseite: http://127.0.0.1:9000/parent.html
Frameseite: http://127.0.0.1:9001/iframecontent.html
Server: 2 Instanzen von PHP -S
Failed to execute 'postMessage' on 'DOMWindow': The target origin provided ('http://127.0.0.1:9001') does not match the recipient window's origin ('http://127.0.0.1:9000').
Response-Header vom Parent:
Host: 127.0.0.1:9000
Date: Tue, 24 Jun 2025 15:15:21 GMT
Connection: close
Content-Type: text/html; charset=UTF-8
Content-Length: 687
Response-Header vom iframe:
Host: 127.0.0.1:9001
Date: Tue, 24 Jun 2025 15:15:21 GMT
Connection: close
Content-Type: text/html; charset=UTF-8
Content-Length: 150
Die Lösung ist keine Sache von CORS-Headern, wie behauptet wurde, sondern erfordert eine korrekte Parametrierung der postMessage Methode.
Im Selfwiki und auch bei MDN steht, was zu tun ist. Ich habe das im Wiki-Artikel nochmal betont: Bei einem Cross-Origin Versand muss man explizit angeben, an welchen Origin versendet werden darf. Oder man gibt an, dass einem der Empfänger-Origin egal ist (was aber nicht gut ist, denn man möchte ja nicht unbedingt fremd-geframed werden).
Der targetOrigin ist per Default der Origin der Absende-Seite. Bei mir war das http://127.0.0.1:9001, deshalb steht das als "target origin provided" in der Fehlermeldung.
Lösung für Dich sollte sein:
// In https://shantyfreun.de
window.parent.postMessage( window.outerHeight, "https://shanty-fsd.de");
Rolf
sumpsi - posui - obstruxi