跨域問題 Blocked a frame with origin "http://......" from accessing a cross-origin frame.


為了輕松偷懶,不想從目的項目中開發目標項目中的頁面,但目的項目中需要獲取老項目中的頁面,這里用了iframe跨域鏈接頁面出現了問題

Blocked a frame with origin "http://......" from accessing a cross-origin frame.

出現此報錯的原因是因為在http://driversys.edaijia.cc 下操作 http://www.edaijia.cc   下的dom導致。

項目框架是yii2,代碼如下,項目中是在看代碼中http://driversys.edaijia.cc 下操作的iframe連接指向是http://www.edaijia.cc   dom元素。

 

//http://driversys.edaijia.cc 項目下代碼
<?php
Modal::begin([
    'id' => 'create-modal-article',
    'header' => '<h4 class="modal-title">選擇長文章</h4>',
    'footer' => '<a href="javascript:;" class="btn btn-info" id="confirm_article" >確定</a><a href="javascript:;" class="btn btn-danger" id="close_article_window" >關閉</a>',
]);
$requestUrl = 'http://www.edaijia.cc/v2/index.php?r=newNoticePost/selection';
$js = <<<JS
$('#create-modal-article .modal-body').html('<iframe name="article_ifm" id="add_long_article" width="99%" height="100%" style="border:0px"></iframe>');
$("#add_long_article").attr("src", 'http://www.edaijia.cc/v2/index.php?r=newNoticePost/selection');

$('#create-modal-article').find('.modal-header').find('.close').hide();
JS;

解決方法:

在父頁面添加監聽器,接收子頁面的值:

window.addEventListener('message',function(e){

alert(e.data);

           },false);

 

在子頁面在要傳值的地方調用以下語句傳值:

window.parent.postMessage('值','http://www.....);

解決代碼:

//http://www.edaijia.cc項目代碼 

$("#new-notice-post-grid :radio").on('click', function () { //監聽radio選中,並把值傳遞
        window.parent.postMessage([$(this).attr('did'),$(this).val()],'http://driversys.edaijia.cc');
    })

 

//http://driversys.edaijia.cc  項目代碼,獲取傳遞的值
//長文章radio獲取
   window.addEventListener('message',function(e){
       window.did = e.data[0];
       window.title = e.data[1];

   },false);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM