我正在實施將包含在第三方網站的文章/故事頁面上的「小部件」。此小部件位於我們的域中託管的<iframe>中。它需要從其父頁(第三方網站)的文章中收集文本,然後用它對返回相關內容的服務進行各種API調用,然後將其顯示在我們的<iframe>小部件中。訪問位於不同域中的<iframe>的文檔文本
由於跨域安全限制,我無法訪問父頁面的DOM,其中存在問題。我可以在父頁面上放置任何我需要的代碼(例如,一些解析出我需要的內容的JavaScript),並且iframe >也完全在我的控制之下,但我不確定如何從主機頁面獲取內容到我的<iframe>,因爲它們託管在不同的域上。安全性非常重要,我希望找到一種不會以任何方式危害的方法。
我最初的想法是從父頁面的頁面內容傳遞到我的< IFRAME SRC =「」使用的查詢參數>屬性:
<iframe src="http://www.mydomain.com/widget.html?page_content=This is some page content."></iframe>
我可以在父頁面上使用<腳本>收集文本,然後document.write一個<iframe>,它使用持有我的文本的字符串來創建一個動態的「page_content」查詢參數。然後page_content參數將可用於document.href中我的<iframe>頁面。
但是,我需要從父頁面收集8 KB的文本,我的理解是GET請求有1 KB的限制 - 這是真的嗎?如果沒有,或者如果我可以在我的服務器上配置此限制,則可能解決問題。
如果這將是一個限制,我還可以如何獲得創意並將此文本傳遞到我的小部件中?這需要一個非常可擴展的解決方案,因爲父網站每月獲得數千萬的頁面瀏覽量。我也不想以重要的方式影響父頁面的性能。
我在我的小部件中有jQuery可用,但不能依賴除父頁面中的普通JavaScript之外的其他任何東西。
感謝您的回覆,wdebeaum - 這是一個很好的建議,但是不會涉及到服務器之旅,然後在<iframe>小部件中使JavaScript數據訪問POST數據?我不認爲有一種方法可以讓小部件訪問POST數據,否則;性能在這裏至關重要,所以如果可能的話,我想避免額外的服務器行程。在這種情況下GET請求的美妙之處在於,它更多地用作從不同域中輕鬆訪問某些文本(作爲查詢參數)的手段。 – Bungle 2009-10-03 21:03:21
我不明白如何POST請求會暗示一個額外的旅程相對於GET請求服務器......他們都去服務器,以獲得iframe的內容。然後,服務器可以將查詢參數(無論是GET還是POST)放入其回覆中,以使iframe中的JavaScript可以訪問該參數。 如果你說設置iframe的src屬性應該以某種方式傳播到document.href屬性而不實際從服務器請求頁面,我不知道這是真的。 – wdebeaum 2009-10-06 20:48:02