转:
最近工作中有这样的需求:项目在A机器(假设域名为www.a.com)上跑,资源文件要存储在专门的资源机器B(假设域名为www.b.com),要求在A上传文件到B上同时将上传信息以json格式返回。
由于之前的项目都比较小,也没有这样的需求,基本都是在单机上操作,自然涉及不到跨域的问题,初次遇到这个问题,比较棘手,进行了如下尝试均失败。
尝试一:在A机器上的页面中嵌入一个iframe,iframe的src指向B机器的一个上传页面,这样可以很容易将资源上传到B机器,但是却很难实现“以json格式返回上传信息”{
尝试二:利用SWF上传插件,借助AS脚本上传,比较著名的插件如:JQuery Uploadify支持此功能,这种方法利用了Flash沙箱原理,理论上可以完成跨域上传,但是前提是需要对服务器有绝对的控制权,因为这种方法需要域名的根目录下存在一个跨域访问的策略文件crossdomain.xml,客观条件限制,次尝试亦失败。
以上两次尝试都已失败告终,无奈只好在CSDN上求助,CSDN果然强悍,感谢moocky网友提供思路:
上传文件到A网站,然后通过PHP的ftp函数、或HTTP模拟上传到B,这样的话返回的json一直是在A网站上的;另外也可以参考一下腾讯的,如果两个网站都是你的,比如你a网站的域名为www.a.com,在B网站同时绑定一个域名upload.www.a.com,就可以直接上传到B网站并返回json数据了