前提・実現したいこと
ブラウザでiframeの中身を操作したいのですが以下のエラーが出て操作できません。
CORS(?)が問題だということが分かったのでChromeの拡張機能でポリシーを無効にしたのですがそれでも同じエラーが出ます。
Chrome拡張機能4つ:使用時は1つずつ
Allow CORS: Access-Control-Allow-Origin
CORS Unblock
Cross Domain - CORS
Moesif Origin & CORS Changer
Test CORSのサイトで確認してポリシーが無効になっていることは確認しました。
何か他にもしなければいけないことがあるのでしょうか?
宜しくお願い致します。
発生している問題・エラーメッセージ
Uncaught DOMException: Blocked a frame with origin "http://127.0.0.1:5500" from accessing a cross-origin frame. at HTMLIFrameElement.ifrm.onload (http://127.0.0.1:5500/index.html:26:48)
これはVSCodeのLive Serverでの実行ですがサーバーにアップしてからでも同じエラーが出ます。
該当のソースコード
HTML
1 2 <body> 3 <iframe src="" id="ifrm" width="400" height="300" style="opacity: 0.3;"></iframe> 4 5 <script> 6 var url = "https://google.co.jp" 7 8 ifrm.src = url; 9 ifrm.onload = function(){ 10 console.log("読み込み完了"); 11 const ifrm = document.getifrmentById('ifrm'); 12 const doc = ifrm.contentWindow.document; 13 console.log(doc); 14 } 15 </script> 16 </body> 17
試したこと
iframeがこの拡張機能で無効化できるXMLHttprequestで通信しているのかがわからなかったので以下のコードで明示的にXMLHttpRequestを使って実行しましたが変わりません。
HTML
1 2 3 <body> 4 <iframe src="" id="ifrm" width="400" height="300" style="opacity: 0.3;"></iframe> 5 6 <script> 7 var url = "https://google.co.jp" 8 9 var request = new XMLHttpRequest(); 10 request.open("GET", url); 11 request.responseType = "document"; 12 request.send(""); 13 request.onreadystatechange = function() { 14 if (request.readyState == 4 && request.status == 200) { 15 16 var ifrm = document.getelementById("ifrm"); 17 ifrm.src = request.response; 18 } 19 } 20 </script> 21 </body> 22
補足情報(FW/ツールのバージョンなど)
Google Chrome は最新版を利用しています。
バージョン: 87.0.4280.66(Official Build) (64 ビット)
コードを実行しているときは拡張機能をONにしています。
responseTypeをtext等にするとしっかり取得出来ているのですがdocumentの形式にしてiframeのsrcに入れるとまた同じエラーが出ます。
Google.co.jpは他サイトということの例です。
方法を1つ思いついたので追記
こういう事が出来るかは分からないのですが、プロキシサーバを用いてヘッダを書き換えると言うのは可能でしょうか?
プロキシサーバが何たるかもよく分かっていないのですが別の問題でこういう手段もあると言うのを見たことがあるので、、、
良ければこれについて何か意見をお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/30 12:51
2020/12/01 02:01
退会済みユーザー
2020/12/08 08:20