2010-11-05 218 views
8

是否有一種方法,使一個Ajax請求Ajax跨子域請求?

s3-ap-southeast-1.s3.amazonaws.com(至S3 API)

s3.amazonaws.com

(從哪裏託管的JavaScript應用程序)?

回答

3

你不能做跨域的Ajax請求。這包括子域名。但是,可以使用JSONP

+2

JSONP只能用GET請求 – 2013-11-04 15:24:39

0

我想我找到了鏈接,@Patrick已經發布,它已成爲破

http://hoppeweb.blogspot.com/2008/03/cross-sub-domain-javascript-ajax-iframe.html

,以避免發生這一次我只是嘗試重新帖吧)

這個想法是在一個域上設置一個iframe html,然後從另一個子域的頁面調用該iframe。父頁面和它內部的iframe應該有相同的document.domain

document.domain = "example.com" 

一旦完成,這兩個頁面就像它們在同一個域中一樣。

休息,只是複製粘貼((

例如,對於拉動文本,設置在頁面上 www.yourdomain.com並設置document.domain的以yourdomain.com。如果你 試圖從img.yourdomain.com使用Ajax拉一個html頁面, 設置一個頁面,該頁面將成爲iframe,以執行ajax pull。在 拉動完成後,將document.domain設置爲yourdomain.com。在 您的網頁上www。創建一個iframe,其中src設置爲您的頁面 img。由於document.domain已設置,父頁面 上的任何函數都可以通過iframe調用。假設你想把 你最近的「ajaxed」html放到父頁面的div上,你可以通過「parent.getElementById('yourDivName')。innerHTML = Response.Text」做 。

如果您正在使用XML,則可以像上面一樣設置頁面/ iframe關係 。該iframe將在img.yourdomain.com上對 上的XML進行ajax調用,並對其進行處理,可以將其轉換爲 陣列。完成後,在iframe 頁面上設置document.domain。此時,父頁面可以通過「iframeName.arrayName」在其iframe上訪問該數組。或者,您可以在父頁面上輸入一個數組 以獲取此信息,並通過「parent.arrayName = iframeArray」將它從iframe傳遞到父項 。

最初由@湯姆·霍普