【发布时间】:2011-08-12 23:43:02
【问题描述】:
客户端在foo.com域上,需要上传(发送POST XMLHttpRequest)到upload.foo.com。
由于同源政策,这是受到限制的。
但是,我设法想出的解决方法是,在 foo.com 打开 upload.foo.com 上动态创建 iframe 并附加执行来自 upload.foo.com 的 POST 请求的 JavaScript 代码,如下所示:
iframe.onLoad [..]
(a=(b=doc)
.createElement('script'))
.src='http://foo.com/upload.php?'+Math.random(),
b.body.appendChild(a);
void(0);
现在,对我来说这似乎是多余的:如果后者是可能的,我的逻辑告诉我前者也应该是可能的。是吗?
--更新
我刚刚注意到子域上有一个包含以下内容的文件:
<?xml version="1.0" ?>
<cross-domain-policy>
<allow-access-from domain="*" />
<allow-access-from domain="*.foo.com" secure="false" />
</cross-domain-policy>
我能以某种方式利用它来发挥我的优势吗?
【问题讨论】:
-
你运行了吗?因为我认为您也不能操纵其他域的 iframe。
-
iframe概念有效,是的。我已经用了几天了。 -
这样可以吗。在 foo.com 上加载 iframe src bar.foo.com;附加一个回调,该回调将调用父页面中的函数(我确实有权修改 iframe 的内容)并从该回调函数使 XMLHttpRequest 好像来自该 iframe?
标签: javascript xmlhttprequest same-origin-policy