首頁 >web前端 >js教程 >如何從不同子網域上的 iFrame 取得父頁面的 URL?

如何從不同子網域上的 iFrame 取得父頁面的 URL?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-15 22:06:02928瀏覽

How Can I Get the Parent Page's URL from an iFrame on a Different Subdomain?

從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 代碼:

注意:

  • window.parent.location 避免了訪問href 屬性( window.parent.location.href) 所導致的安全性錯誤。
  • document.referrer 指的是連結到 iFrame 的頁面的 URI。如果 iFrame 位置是由另一個來源決定的,則可能不會傳回包含文件。
  • document.location 指文檔的 URL,在本例中為 iFrame。當 window.location 和 window.parent.location 相同時,iFrame 的 href 與父親等級的 href 相同。

以上是如何從不同子網域上的 iFrame 取得父頁面的 URL?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn