Ajax无刷新上传文件跨域问题解决办法

  • A+
所属分类:PHP

我的需求是这样的: A和B是两个不同域的服务器,A要调用B的接口将文件上传到B端,B端返回一串JSON,A端要拿到返回值进行处理。

首先,说说Ajax无刷新实现文件上传,网上有很多插件,比较好用的有uploadify(flash)jQuery.upload(iframe)等。jquery.upload借助iframe,在iframe里创建表单submit,上传完成后移除iframe,这样只在框架里刷新,表面看起来主页面并没有刷新,这样就完成了无刷新文件上传。

再说跨域,不管是用flash还是用iframe的方式上传都牵扯到一个跨域的安全问题导致上传失败,服务器返回的callback信息无法供主页面使用。网上有人说用domain.name,这种方法我折腾了半天也没调通。有人用flash上传的需要服务器加一个crossdomain.xml文件,还有的非flash方式上传的需要服务器加header(“Access-Contro-Allow-Origin:*”)。后面这两种方法都不安全,而且如果无法获得服务器权限也行不通。

经过多方实验,最终放弃了在终端上传的尝试。

终极解决方案是:用ajax将数据提交到同域,在服务器后端处理上传文件的请求并接收返回数据。这里需要借助PHP的CURL模块。

今天不早了,改天有空再补例子吧。

weinxin
我的微信公众号
我的微信公众号扫一扫

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: