2012-06-30 40 views
1

除YQL之外,有沒有辦法在不修改服務器端代碼的情況下從其他域獲取ajax的響應和數據?如何從其他域獲得ajax響應?

YQL對於自由用戶有限制(每小時1000個電話),但大多數人表示實際上較少。

回答

3

如果你的意思是「沒有修改服務器端的代碼」沒有修改數據源的服務器,那麼你可以讓自己的代理服務器(基本上使你自己的YQL服務器)讀取遠程數據。這是可能的,因爲服務器端沒有綁定到同源策略。

所以,你可以AJAX您的服務器,然後讓你的服務器使用某種形式的wgetcurlfopen讀取遠程服務器,並返回什麼檢索:

Remote server <- fopen, curl or wget -> your server <- AJAX -> browser 
+0

謝謝,我知道你說的這個方法。但希望我不需要修改我的或數據服務器端的代碼。還有其他免費的查詢服務器,如YQL嗎? – George

+0

@George最好在自己的服務器上創建一個。這樣做的好處是你可以使用AJAX查詢你的服務器(相同的域名),再加上你可以完全控制它(沒有查詢限制等) – Joseph

+0

你是對的。這很容易。但是,我發現我可以使用yql.multi函數在一次調用中下載大量數據。 – George

1

您可以使用iframe的接收模式。這是一種古老的技術。請參閱MSDN上的Danny Thorpe的Secure Cross-Domain Communication in the Browser。您不必使用JSONP,但仍可以進行跨域調用

+0

感謝您的回覆。我認爲這個解決方案就像html5的postMessage方法。雖然postMessage無法在舊版瀏覽器中支持.... – George

1

您可以使用postMessage的HTML 5功能進行跨域調用。所有的瀏覽器都不支持它。看看下面的鏈接執行: Cross domain call using postMessage

+0

感謝您的分享!!!!它可以解決我目前的問題,同時在不同的內聯框之間進行通信! – George