2013-06-18 126 views
0

最近我遇到以下聲明:「所有 Ajax調用XML數據文件必須來自同一個域或請求將失敗。」,任何人都可以幫助我理解這一點,因爲我可以'沒有多大用處。AJAX XML調用跨域

+1

這意味着它說。除非與您位於同一個域中,否則您無法通過AJAX獲取XML。看到這個:http://en.wikipedia.org/wiki/Same_origin_policy –

+0

你不能進行跨域調用,但你可以進行同域調用谷歌它。 – moonwave99

+0

我從維基百科鏈接中得到它,謝謝! –

回答

0

比方說,您的網站,包括啓動AJAX的Javascript託管在site1.com

AJAX將請求一個名爲file.xml的文件,其地址爲site2.com/file.xml

此請求site1.com --->site2.com說明相同的原產地策略,因爲2在不同的域上。

解決方法?

  • 最簡單的解決方案是在site1.com上託管file.xml,如果可以的話?
  • 您可以在您的域名site.com/getMeThatAwesomeFile它執行一些服務器端代碼來獲取文件的內容,並返回到您請求的URL
  • 您可以使用反向代理,以便site2.com/file.xml實際上解析爲您的域名的東西。
0

您可以使用JSONP,但有一些限制(只允許'GET'動詞,數據應放置在服務器的函數內部)。 JSONP首先不是ajax調用,它下載腳本並調用jsonp函數,並在該函數中傳遞數據。

例如如果你使用JSONP,那麼它會像

<script type='text/javascript' src='cross-domain-url'>jsonpFunction(data)</script> 

從服務器中,你必須得到像jsonpFunction({「名」:「ABC」})的反應,所以得到這個響應後,您宣佈jsonpFunction會被調用,你將能夠實現這個{'name':'abc'}對象。