簡體   English   中英

對同域iframe的權限被拒絕

[英]Permission denied to same-domain iframe

我一直在更新一些舊版軟件。 我們最近更新了系統中使用的一些過期未更新的工具,通過這些更新,我們的jQuery和AngularJS工作庫發生了變化。

我已經使大多數代碼與新更新一起使用了,但是這一段讓我很困擾。 我想這在更新之前就可以很好地工作了,后來又停止了工作。 我無法檢驗此說法。

使用ng-import,我們輸入以下代碼:

<iframe id="uploadFrame" width="250" height="50" frameborder="0" ng-src="/store/client/productscripts/binderCreate/partials/upload.html?dealer={{dealer}}" name="uploadFrame" scrolling="no" marginwidth="0" marginheight="0">
</iframe>

相關文件如下所示:

<html><head>(snip)</head><body>
<form id="uploadForm" enctype="multipart/form-data" method="post" action="http://other.ourdomain.com/clientbinders/upload?dealer={{dealer}}">
<input id="uploadFileInput" type="file" name="uploadFile">
</form>
</body></html>

用戶使用iFrame中輸入的文件上傳他們的新圖像。 然后,一旦加載完畢,我們便在iFrame外部有一個按鈕,用於觸發iFrame的表單提交。 這樣,我們可以讓用戶上傳其圖像並立即查看結果,而無需重新加載整個表單。 添加了大量跟蹤代碼以嘗試確定javascript所看到的內容之后,並嘗試了幾種不同的方法來訪問iFrame DOM(.contentWindow.document,.contentDocument等),此代碼如下所示:

function uploadFile(){
    var myIfrm = jQuery('#uploadFrame');
    console.log("TEST #uploadFrame");
    console.log(myIfrm);
    console.log(myIfrm.length);
    console.log("TEST #uploadFileInput");
    console.log(myIfrm.contents().find('#uploadFileInput')); // ERROR HAPPENS HERE
    console.log(myIfrm.contents().find('#uploadFileInput').length);
    (snip:  lots more tracking code and eventually a .submit() )
}

我在指定行收到的錯誤是:

錯誤:拒絕訪問屬性“文檔”的權限

由於iframe引用的是同一域上的網頁,因此我看不到為什么應拒絕該權限。 當然,問題是:為什么我的訪問權限被拒絕? 或者,我應該如何做才能使其正常工作?

對於Iframe,您可以這樣設置域。 並且您應該能夠避免Error: Permission denied to access property "document"

  <script type="text/javascript">
        window.document.domain = "ourdomain.com";
    </script>

在這里,我還沒有弄清楚什么地方出了問題,但是我知道了它在起作用。 不幸的是,這沒有任何意義。

在程序的更高級別,使用ng-import導入了一個片段,如下所示:

ng-import="'client/productscripts/binderCreate/partials/'"

當更新為:

ng-import="'/store/client/productscripts/binderCreate/partials/'"

它開始正常工作。 所做的更改對ng-import是否起作用沒有影響。 ng-import一直有效。 但是,在較高級別進行更改會導致該級別的代碼突然開始工作。 道歉未包含足夠的問題-我從未想到過,似乎工作得很好的高級ng-import會以這種方式影響事物。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM