上传时用的另一个服务器作为接口跨域了怎么办

提问 未结
8 1659
读心印
读心印 2016-10-22
悬赏:5飞吻
上传时用的另一个服务器作为接口跨域了怎么办

提示上传接口存在跨域

但实际是传上去了,也返回了json

回帖
  • 遇到同样的问题,求解决方案![可怜]
    0 回复
  • 读心印
    2016-10-24
    @果汁◕̯͡◕ 我也郁闷死了,按照教程,把apache设置好了,结果还是没用,我真郁闷了
    0 回复
  • 读心印
    2016-10-24
    @果汁◕̯͡◕ 加我QQ839024615 决解好了告诉一下
    0 回复
  • guozhi
    2016-10-24
    我自己改写了upload.js,解决了。稍等我把代码贴出来。
    0 回复
  • guozhi
    2016-10-24
    ;layui.define("layer",function(e){"use strict";var a=layui.jquery,t=layui.layer,i=(layui.device(),"layui-upload-enter"),n="layui-upload-iframe",r={icon:2,shift:6},o={file:"文件",video:"视频",audio:"音频"},s=function(e){this.options=e};s.prototype.init=function(){var e=this,t=e.options,r=a("body"),s=a(t.elem||".layui-upload-file");s.each(function(r,s){s=a(s);var u='<form target="'+n+'" method="'+(t.method||"post")+'" key="set-mine" enctype="multipart/form-data" action="'+(t.url||"")+'"></form>',l=s.attr("lay-type")||t.type;t.unwrap||(u='<div class="layui-box layui-upload-button">'+u+'<span class="layui-upload-icon"><i class="layui-icon"></i>'+(s.attr("lay-title")||t.title||"上传"+(o[l]||"图片"))+"</span></div>"),u=a(u),t.unwrap||u.on("dragover",function(e){e.preventDefault(),a(this).addClass(i)}).on("dragleave",function(){a(this).removeClass(i)}).on("drop",function(){a(this).removeClass(i)}),s.parent("form").attr("target")===n&&(t.unwrap?s.unwrap():(s.parent().next().remove(),s.unwrap().unwrap())),s.wrap(u),s.off("change").on("change",function(){e.action(this,l)})})},s.prototype.action=function(e,i){var o=this,s=o.options,u=e.value,l=a(e),p=l.attr("lay-ext")||s.ext||"";if(u){switch(i){case"file":if(p&&!RegExp("\\w\\.("+p+")$","i").test(escape(u)))return t.msg("不支持该文件格式",r),e.value="";break;case"video":if(!RegExp("\\w\\.("+(p||"avi|mp4|wma|rmvb|rm|flash|3gp|flv")+")$","i").test(escape(u)))return t.msg("不支持该视频格式",r),e.value="";break;case"audio":if(!RegExp("\\w\\.("+(p||"mp3|wav|mid")+")$","i").test(escape(u)))return t.msg("不支持该音频格式",r),e.value="";break;default:if(!RegExp("\\w\\.("+(p||"jpg|png|gif|bmp|jpeg")+")$","i").test(escape(u)))return t.msg("不支持该图片格式",r),e.value=""}var formdata=false;if(window.FormData){formdata=new FormData()}formdata.append("filename",u);var oXHR=new XMLHttpRequest();if(s.before){oXHR.upload.addEventListener('progress',function(e){s.before(e)},false)}oXHR.addEventListener('load',function(d){var data=d.target.responseText;s.success(JSON.parse(data),e)},false);if(s.error){oXHR.addEventListener('error',function(e){s.error(e)},false)}oXHR.open('POST',s.url);oXHR.send(formdata);return}},e("upload",function(e){var a=new s(e=e||{});a.init()})});
    把/lay/modules/upload.js替换了。
    用法跟原版用法一致,只是把iframe上传改为了XMLHttpRequest。
    layui.upload({
    url: '上传接口url'
    ,before:function(){
    console.log('正在上传中');
    },
    ,success: function(res,obj){
    console.log(res); //上传成功返回值,必须为json格式
    console.log(obj); //上传file对象
    }
    });
    0 回复
  • guozhi
    2016-10-24
    当然,你也可以设置X-Frame-Options,不过,我没有设置成功。。。
    0 回复
  • 读心印
    2017-2-11
    @guozhi 我就是没成功,气死我了,但我直接传到本服务器,然后再用php去传给另一个服务器了
    0 回复
  • 小雨笑
    2017-3-22
    @guozhi 你好,请问下xmlhttprequest send过去的formdata参数在 服务端接口处要怎么接收啊,我试了好多种办法都接受不到,请教大神指点一下。。[微笑]
    0 回复
本帖已设置禁止回复