如何处理跨域iframe文件上传json响应?

时间:2011-06-18 01:17:11

标签: json iframe upload cross-domain

我正在构建文件上传API。

基本上,用户必须使用他/她的api_key +签名将文件POST到我的Web服务。然后我的Web服务回复JSON响应。我想知道这个过程如何异步工作?

假设用户在将目标设置为iframe的表单中POST请求。 JSON响应将在他/她的iframe上发回给用户,内容类型设置为“text / html”。它设置为“text / html”而不是“application / json”,因为我想避免浏览器在JSON响应周围注入“pre”标记。无论如何,如果iframe和父窗口有不同的域,用户如何读取JSON响应?将会出现跨域政策问题。

动态创建“script”标记加上JSONP在这种情况下不起作用,因为我需要POST才能上传。 JSONP仅适用于GET请求。

2 个答案:

答案 0 :(得分:1)

查看“上传”示例here。它使用跨域消息传递将消息传递回上载页面,并使用easyXDM支持所有浏览器。

This post解释了一切是如何运作的!

答案 1 :(得分:0)

由于同源策略,浏览器不允许主框架中的JavaScript读取/访问来自其他域的iframe中的任何内容。在这种情况下,用户将不得不使用easyXDM或创建自己的代理 - 通过代理在这里我的意思是用户必须在他们的后端编写一些代码,这些代码可以与您的API通信,以便发布请求将直接发送到您的服务器,获得响应将来自他们自己的代理。