- 转:
- 最近工作中有这样的需求:项目在A机器(假设域名为www.a.com)上跑,资源文件要存储在专门的资源机器B(假设域名为www.b.com),要求在A上传文件到B上同时将上传信息以json格式返回。
- 由于之前的项目都比较小,也没有这样的需求,基本都是在单机上操作,自然涉及不到跨域的问题,初次遇到这个问题,比较棘手,进行了如下尝试均失败。
- 尝试一:在A机器上的页面中嵌入一个iframe,iframe的src指向B机器的一个上传页面,这样可以很容易将资源上传到B机器,但是却很难实现“以json格式返回上传信息”{/*当然这里可以想将返回的数据写到B机器的上传页面,然后在提交A页面的表单时,利用js从B机器上获取返回数据,但是这样太过繁琐,且耦合度极大,基本可以放弃*/}。
- 尝试二:利用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数据了