Ich lade ein </code> in meiner HTML-Seite und versuche, die Elemente darin mit JavaScript zu bearbeiten, aber wenn ich meinen Code ausführen möchte, erhalte ich den folgenden Fehler:</p> <blockquote> <p>Sicherheitsfehler: Ein Frame mit der Herkunft "http://www.example.com" wurde daran gehindert, auf einen Frame mit einer anderen Herkunft zuzugreifen.</p> </blockquote> <p>Wie kann ich auf die Elemente im Frame zugreifen?</p> <p>Ich verwende diesen Code zum Testen, aber vergeblich:</p> <pre class="lang-js prettyprint-override"><code>$(document).ready(function() { var iframeWindow = document.getElementById("my-iframe-id").contentWindow; iframeWindow.addEventListener("load", function() { var doc = iframe.contentDocument || iframe.contentWindow.document; var target = doc.getElementById("my-target-id"); target.innerHTML = "Gefunden!"; }); }); </code></pre></x-turndown>
Antworten
Zu viele Anzeigen?Ich möchte Java Spring-spezifische Konfiguration hinzufügen, die sich darauf auswirken kann.
In der Webseite oder Gateway-Anwendung gibt es eine contentSecurityPolicy-Einstellung.
In Spring können Sie die Implementierung der Unterklasse WebSecurityConfigurerAdapter finden.
contentSecurityPolicy("
script-src 'self' [URLDomain]/scripts ;
style-src 'self' [URLDomain]/styles;
frame-src 'self' [URLDomain]/frameUrl...
...
.referrerPolicy(ReferrerPolicyHeaderWriter.ReferrerPolicy.STRICT_ORIGIN_WHEN_CROSS_ORIGIN)
Der Browser wird blockiert, wenn Sie hier keine sicheren externen Inhalte definiert haben.
Wenn Sie die Inhaltssteuerung des iframe haben - das heißt, wenn es nur in einem Cross-Origin-Setup geladen wird, wie zum Beispiel auf Amazon Mechanical Turk - können Sie dieses Problem mit dem Attribut für den inneren html umgehen.
Zum Beispiel für das innere html, verwenden Sie den this
html-Parameter (ja - this
ist definiert und bezieht sich auf das übergeordnete Fenster des inneren body-Elements):
Im inneren html:
function changeForm(window) {
console.log('inneres Fenster geladen: Machen Sie, was Sie möchten, mit dem inneren html');
window.document.getElementById('mturk_form').style.display = 'none';
Ich habe diesen Fehler erlebt, als ich versucht habe, ein iframe einzubetten und dann die Seite mit Brave zu öffnen. Der Fehler verschwand, als ich zu "Shields Down" für die betreffende Seite wechselte. Offensichtlich ist dies keine vollständige Lösung, da alle anderen Besucher der Seite mit Brave auf dasselbe Problem stoßen werden. Um es tatsächlich zu lösen, müsste ich eine der anderen auf dieser Seite aufgelisteten Maßnahmen ergreifen. Aber zumindest weiß ich jetzt, wo das Problem liegt.
- See previous answers
- Weitere Antworten anzeigen