2011-08-24 49 views
2

AJAX似乎是一個很好的辦法,直到我們打AJAX客戶端只能夠從它們下載到哪裏的服務器進行通信的限制,因此,秉承「同根同源的政策。 「使用JSON解決跨域問題的基於JavaScript的

有誰請告訴我如何才能JSON可以解決這個跨領域問題,如我所知JSON只是一種數據格式,稱數據如何呈現。

請給你的這個 建議我的問題是如何XMLHttpRequest是由不同結構的數據格式

回答

2

JSONP維基百科上控制:

JSONP或「JSON與填充」是補充到基座JSON數據 格式,使用的允許頁面從 服務器在不同域中請求數據的圖案。 JSONP是這個問題, 的解決方案,以形成所謂的跨來源 資源共享一個較新的方法替代。

...

服務器然後包裝了這個前綴,或「填充」的JSON響應,它發送到瀏覽器。當瀏覽器收到來自服務器的封裝響應時,它現在是一個腳本,而不僅僅是一個數據聲明。

1

看到這個wiki的帖子。它確實告訴你如何/爲什麼。但要準確:

它的工作原理,因爲它不再JSON,但因爲它解釋爲腳本/ JavaScript的

+0

謝謝!作爲服務器端程序員,我可以問這個問題嗎?如果我在同一臺服務器上有兩個域 - 如果我使用指向其他文件的文件的符號鏈接,是否可能?這是一種可接受的做法嗎?或者,Wiki的方法表明是最好的? – Faron

0

幾乎一樣優雅的JSONP答案,但在加獎金:

  • 可以查詢不是jsonp「知曉」的服務器。
  • 可能的服務器端的數據驗證。

我的思路是在您自己的服務器上編寫一個腳本,以代理請求和響應。

這樣你也可以驗證數據的內容。

此外jsonp要求請求的服務器將其json響應封裝在回調函數中。對於查詢的服務器是否支持jsonp,此解決方案是不可知的。

(編輯): 當然,這將是明智的,以確保,該腳本不允許大家代理一切:)