Ajax跨子域请求?

8
有没有一种方法可以从托管JavaScript应用程序的s3.amazonaws.com向S3 API的s3-ap-southeast-1.s3.amazonaws.com发出Ajax请求?请注意保留html标记。
7个回答

3

3

您无法进行跨域Ajax请求,包括子域。但是,可以使用 JSONP


1

1

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。如果您尝试使用 Ajax 从 img.yourdomain.com 拉取 HTML 页面,则需要设置一个页面作为 iframe 来执行 ajax 拉取。完成拉取后,请将 document.domain 设置为 yourdomain.com。在 www. 上创建一个 iframe,其 src 设置为 img 上的页面。由于已经设置了 document.domain,因此父页面上的任何函数都可以通过 iframe 调用。假设您想将新获取的 html 放入父页面上的 div 中,则可以通过 "parent.getElementById('yourDivName').innerHTML = Response.Text" 进行操作。
如果您要拉取 XML,则可以按照与上述相同的方式设置页面/iframe 关系。该 iframe 将调用 img.yourdomain.com 上的 XML 并对其进行某些操作,比如将其转换为数组。完成后,请在 iframe 页面上设置 document.domain。此时,父页面可以通过 "iframeName.arrayName" 访问该 iframe 上的数组。或者,您可以在父页面上读取一个数组以获取此信息,并通过 "parent.arrayName = iframeArray" 将其传递给父页面。

原作者:@Tom Hoppe


0

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接