ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript で「SecurityError: Blocked Cross-Origin Frame Access」というメッセージが表示されるのはなぜですか?
SecurityError: Blocked a frame with origin "http://www.example.com" from accessing a cross-origin frame.
このエラーは、ブラウザが強制する基本的なセキュリティ対策である同一オリジン ポリシーの結果です。
同一オリジン ポリシースクリプトが、オリジンが異なるリソース (他のページやフレームなど) にアクセスできないようにします。オリジンは、プロトコル (HTTP など)、ホスト名、URL のポートによって定義されます。これらのコンポーネントのいずれかに相違がある場合は、別のオリジンが構成されます。
たとえば、「http://www.example.com」のスクリプトは、「https://www.example.com」のリソースにアクセスできません。 、「http://www.anothersite.com」、または「http://www.example.com:81」。
クロスオリジン フレームへの直接スクリプト アクセスはブロックされますが、window.postMessage とイベント リスナーを使用する回避策があります。このアプローチにより、メイン ページとフレーム間でデータを交換できます。
Main Page:
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 } });
同一生成元ポリシーはセキュリティにとって重要であることに注意してください。特定のサイトまたはグローバルでブラウザーで無効にすることは、開発目的でのみ、細心の注意を払って行う必要があります。
以上がJavaScript で「SecurityError: Blocked Cross-Origin Frame Access」というメッセージが表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。