2013-04-17 63 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