Heim >Web-Frontend >js-Tutorial >Warum erhalte ich in JavaScript die Meldung „SecurityError: Blockierter Cross-Origin-Frame-Zugriff'?
Beim Versuch, auf Elemente innerhalb eines
SecurityError: Blocked a frame with origin "http://www.example.com" from accessing a cross-origin frame.
Dieser Fehler ist auf die Same-Origin-Richtlinie zurückzuführen, eine grundlegende Sicherheitsmaßnahme, die Browser durchsetzen.
Die Same-Origin-Richtlinie verhindert, dass Skripte auf Ressourcen zugreifen (z. B andere Seiten oder Frames) mit einem anderen Ursprung. Ein Ursprung wird durch das Protokoll (z. B. HTTP), den Hostnamen und den Port der URL definiert. Jeder Unterschied in einer dieser Komponenten stellt einen separaten Ursprung dar.
Zum Beispiel kann ein Skript von „http://www.example.com“ nicht auf Ressourcen von „https://www.example.com“ zugreifen. , „http://www.anothersite.com“ oder „http://www.example.com:81“.
Während der direkte Skriptzugriff auf Cross-Origin-Frames blockiert ist, gibt es eine Problemumgehung mithilfe von window.postMessage und Ereignis-Listenern. Mit diesem Ansatz können Sie Daten zwischen der Hauptseite und dem Frame austauschen:
Hauptseite:
const frame = document.getElementById('your-frame-id'); frame.contentWindow.postMessage(/*variable or object*/, 'https://your-second-site.example');
window.addEventListener('message', event => { // Check the origin of the data if (event.origin === 'https://your-first-site.example') { // Data is from the main page, use event.data to process it } });
Denken Sie daran, dass die Same-Origin-Richtlinie für die Sicherheit von entscheidender Bedeutung ist. Das Deaktivieren in Ihrem Browser für eine bestimmte Website oder global sollte nur zu Entwicklungszwecken und mit äußerster Vorsicht erfolgen.
Das obige ist der detaillierte Inhalt vonWarum erhalte ich in JavaScript die Meldung „SecurityError: Blockierter Cross-Origin-Frame-Zugriff'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!