2011-08-25 18 views
0

是否可以從具有不同域源的iframe中執行AJAX調用?從具有不同域的iframe中進行AJAX調用

我試過腳本注入,但它不工作,因爲iframe的源是安全的。 我做了一個簡單的小提琴加州DMV網站here

我收到DOM異常8錯誤。這是一個安全問題嗎?

回答

3

無法在具有不同域源的iframe中修改或調用JS調用。出於安全原因,這在所有瀏覽器中都受到限制。

有關幀間安全性如何工作的說明,請參閱「Same Origin Policy」。簡而言之,出於安全原因,不同域之間的幀之間幾乎不允許通信。您不能在不同域之間的幀之間進行任何直接的Javascript調用。

有一種方法可以進行跨域的ajax調用,它涉及到使用JSONP。基本上,您將腳本標記插入到您自己的框架中,並且腳本標記指向Web上任何地方的服務器端點。由於腳本標記的src值不受同一個源策略限制,因此您可以訪問該服務器。但是,現在你需要有一種方法來獲得這個結果。這是使用JSONP完成的,您可以在服務器請求中指定您希望返回的JavaScript調用的JavaScript函數。返回的JavaScript可以有JavaScript數據,然後傳遞給所需的函數。 JSONP需要客戶端代碼和服務器代碼之間的協作,因爲正常的ajax調用可能不支持JSONP的額外部分。但是,通過雙方的這種合作,您可以繞過支持JSONP的服務器端點的相同源策略。

HTML5有一個新的消息傳遞系統,可以在不同領域的協作框架之間安全地傳遞數據(不是直接的JS調用)。有關HTML5消息如何工作的描述,請參閱herehere

相關問題