2016-01-10 59 views
1

我想構建一個phonegap應用程序,它充當客戶端網站的迷你瀏覽器。客戶的客戶將打開這個應用程序,它會有一個收藏夾列表。他們可以點擊這些收藏夾中的一個,並在minibrowser.html頁面中打開該收藏夾。 minibrowser.html在頂部有一個收藏夾按鈕,然後它有一個iframe,它應該充當瀏覽器。我通過更改iframes src打開收藏夾。我可以捕捉標題/ URL與此代碼如何避免未捕獲SecurityError:阻止與手機的起源框架

$iframe.on('load',() => { 
    try { 
    console.log($iframe[0].contentDocument.title); 
    currentUrl = $iframe[0].contentDocument.URL; 
    console.log(currentUrl); 
    } catch (e) {} 
}); 

但出現問題時,iframe中的網頁改掉訪問window.top這一行

window.top.scrollTo(0,1); 

拋出錯誤:

Uncaught SecurityError: Blocked a frame with origin " https://webapp.company.com " from accessing a frame with origin "file://". The frame requesting access has a protocol of "https", the frame being accessed has a protocol of "file". Protocols must match.

有沒有反正欺騙iframe的window.top?無論如何在沒有在webapp.company.com上託管phonegap代碼的情況下這樣做。我無法訪問webapp.company.com

回答

0

由於HTTPS協議的性質,服務器必須指定它是否接受第三方幀分配(類似於您正在嘗試執行的操作) 。這是因爲它在安全方面存在一個主要缺陷。想象一下,一個人可以使用這種黑客的簡單變體來顯示Facebook頁面的一部分,並捕獲您的賬戶詳細信息。這個政策阻止了這一點

一個簡單的解決方法是使用某種URL縮短器或代理轉發器。

舉個簡單的例子:http://codepen.io/nakshatra334/pen/OMgLLP並打開控制檯;你會看到內容安全策略。

標題X-Frame-Options正在否認此情況,因爲人們可能會將其用於非法目的。

相關問題