從iFrame 訪問父級URL:限制和解決方法
從iFrame 訪問父級框架的URL 可能是一項挑戰,特別是當iFrame 位於不同的子域上。這是由於跨站點腳本 (XSS) 預防措施所施加的安全限制。
從與父框架相同的域和子域存取 iFrame 時,應使用諸如 Parent 之類的表達式直接存取父級的位置.document.location 或parent.window.location。但是,正如使用者所強調的,當 iFrame 位於不同的子網域上時,此方法會失敗。
為了進一步說明這一點,請考慮pageA.html 託管在http://www.mysite 上提供的範例.com/ 和pageB.html(iFrame)託管在http://qa-www. mysite.com/ 上。嘗試從 pageB.html 檢索父級的 URL 將觸發存取被拒絕錯誤。這證實了子網域也受到跨站點腳本限制。
雖然在這些情況下禁止直接存取父網域的 URL,但有一個可以使用的解決方法。若要取得父框架的 URL,可以使用下列 JavaScript 程式碼:
var url = (window.location != window.parent.location) ? document.referrer : document.location.href;
注意:
document.referrer 指連結到iFrame 的頁面的URI。如果 iFrame 位置由另一個來源決定,則可能不會傳回包含文件。
document.location 指文件的 URL,在本例中為 iFrame。當 window.location 和 window.parent.location 相同時,iFrame 的 href 與父親等級的 href 相同。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3