2013-04-17 62 views
1

重定向我努力實現以下情形:跨域XHR與

  • 負載從源頁面A.com
  • 開始從該網頁上的腳本同步XHR請求的資源同一產地A.com
  • 此請求,然後用回答302重定向到資源上的另一個起源B.com

我希望這跨域重定向被處理,而是錯誤的由...返回XHR發送方法並且不觸發請求也不觸發預檢請求。

  • 鉻(26):錯誤消息 'NETWORK_ERR:XMLHttpRequest的異常101'
  • 火狐(20):錯誤消息[異常... 「失敗」 nsresult: 「0x80004005的(NS_ERROR_FAILURE)」 ...
  • IE9:沒有錯誤消息,但XHR發送()的狀態返回= 12017

按照XHR specification我本來期望的是,重定向也適用跨來源。

任何想法如何讓這個跨源重定向運行?

回答

2

這是行不通的,因爲重定向是由瀏覽器處理的,而XHR只能看到瀏覽器重定向到的頁面 - 這意味着它是跨域 - 這意味着它將失敗,除非B.com明確允許您的A.com域訪問它。

您也可以將您在A.com上的其他頁面充當代理,並將內容下載到B.com本身,然後輸出它收回的響應。

+0

當使用XHR直接呼叫B.com上的資源時(即不重定向),會向B.com發送一個請求,使B.com允許使用CORS標頭訪問響應。但是這個請求(或者至少一個預檢請求)在重定向時沒有完成。因此,B.com沒有機會明確允許域名A.com訪問任何B.com的迴應。 – user2144597