上传文件到文件服务器跨域问题

lanlvy 2017-05-10 03:20:07
//提交添加的模型
$('#fileSubmit').click(function(){
//保存数据并返回模型页面
var catedoryId = $('#type').val();
var img = $('#modelIcon').val();
//上传到文件服务器并取得返回的图片url
$.ajaxSetup({
async:false
});
$.post('http://file.longmap.com/file/upload',{folderUrl:img},function(data){
alert(data.result); //就是这个请求出现了跨域,不知道如何解决,
img = data.result; //网上的资料很多链接打不开,不知道是不是百度某个服务器挂掉了
})

var name = $('#name').val();
var dataStr = {};
dataStr.catedoryId = catedoryId;
dataStr.img = img;
dataStr.name = name;
//添加模型
$.post('/simulation/model/add',dataStr,function(data){
alert(data.msg);
window.location.href = '/simulation/page/list';
})
})

上面红色部分的请求跨域,这种改如何解决,思路,实例都行,谢谢各位了
...全文
1632 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
shihun_feel 2017-05-25
  • 打赏
  • 举报
回复
引用 14 楼 u012514171 的回复:
[quote=引用 13 楼 showbo 的回复:] [quote=引用 9 楼 u012514171 的回复:] [quote=引用 8 楼 showbo 的回复:] [quote=引用 7 楼 u012514171 的回复:] [quote=引用 4 楼 showbo 的回复:] [quote=引用 3 楼 u012514171 的回复:] [quote=引用 1 楼 showbo 的回复:] 跨域没搞,除非http://file.longmap.com/file/upload是你的或者设置过Access-Control-Allow-Origin响应头允许你跨域访问 而且注意设置那个响应头的话IE用的是XDomainRequest对象,不是XMLHttpRequest对象
这个文件服务器http://file.longmap.com/file/upload是我们的,是二级域名,是后端的人在管理,我这边只需要设置响应头就可以了吗/?还有就是解决这个问题主要是后端解决还是前端解决,如果是前端解决的话前端除了需要设置相应头外还需要做哪些工作“?[/quote]你不兼容ie就前端,你要兼容ie最好是通过服务器端来处理。 前端兼容ie不能用jquery,jquery不支持XDomainRequest的跨域兼容,需要自己写代码来兼容,目标网站设置那个请求头为*就行,或者你允许的域名 通过Access-Control-Allow-Origin控制允许ajax跨域请求的域名[/quote] 设置域名头不行,文字可以,文件不行。现在正在看ajaxfileupload[/quote] ajax原本就传递不了文件,要结合html5的FormData才行。[/quote]formData好像传的是二进制,需要后台解析二进制文件吗?我使用了formData还是提示有跨域问题,但是在network里面的response里面看到请求成功了,但是result里面没有返回值。。[/quote] 还表单传值一样,只是你用的ajax,返回js代码不会执行之类的,服务器该怎么获取就怎么获取[/quote【表情】] 谢谢大佬了,问题最终为后端解决,后端写了个文件中转,我这边没跨域问题了。不过这个问题还会研究的,前端如何解决文件跨域上传我还会继续实现的,打算租个服务器去整。[/quote]文件中转?就是他把文件上传的代码和你的文件放到一起,你就用相对路径去访问,这样就不跨域了,是这样吗?
lanlvy 2017-05-16
  • 打赏
  • 举报
回复
引用 13 楼 showbo 的回复:
[quote=引用 9 楼 u012514171 的回复:] [quote=引用 8 楼 showbo 的回复:] [quote=引用 7 楼 u012514171 的回复:] [quote=引用 4 楼 showbo 的回复:] [quote=引用 3 楼 u012514171 的回复:] [quote=引用 1 楼 showbo 的回复:] 跨域没搞,除非http://file.longmap.com/file/upload是你的或者设置过Access-Control-Allow-Origin响应头允许你跨域访问 而且注意设置那个响应头的话IE用的是XDomainRequest对象,不是XMLHttpRequest对象
这个文件服务器http://file.longmap.com/file/upload是我们的,是二级域名,是后端的人在管理,我这边只需要设置响应头就可以了吗/?还有就是解决这个问题主要是后端解决还是前端解决,如果是前端解决的话前端除了需要设置相应头外还需要做哪些工作“?[/quote]你不兼容ie就前端,你要兼容ie最好是通过服务器端来处理。 前端兼容ie不能用jquery,jquery不支持XDomainRequest的跨域兼容,需要自己写代码来兼容,目标网站设置那个请求头为*就行,或者你允许的域名 通过Access-Control-Allow-Origin控制允许ajax跨域请求的域名[/quote] 设置域名头不行,文字可以,文件不行。现在正在看ajaxfileupload[/quote] ajax原本就传递不了文件,要结合html5的FormData才行。[/quote]formData好像传的是二进制,需要后台解析二进制文件吗?我使用了formData还是提示有跨域问题,但是在network里面的response里面看到请求成功了,但是result里面没有返回值。。[/quote] 还表单传值一样,只是你用的ajax,返回js代码不会执行之类的,服务器该怎么获取就怎么获取[/quote【表情】] 谢谢大佬了,问题最终为后端解决,后端写了个文件中转,我这边没跨域问题了。不过这个问题还会研究的,前端如何解决文件跨域上传我还会继续实现的,打算租个服务器去整。
  • 打赏
  • 举报
回复
Go 旅城通票 2017-05-16
  • 打赏
  • 举报
回复
引用 9 楼 u012514171 的回复:
[quote=引用 8 楼 showbo 的回复:] [quote=引用 7 楼 u012514171 的回复:] [quote=引用 4 楼 showbo 的回复:] [quote=引用 3 楼 u012514171 的回复:] [quote=引用 1 楼 showbo 的回复:] 跨域没搞,除非http://file.longmap.com/file/upload是你的或者设置过Access-Control-Allow-Origin响应头允许你跨域访问 而且注意设置那个响应头的话IE用的是XDomainRequest对象,不是XMLHttpRequest对象
这个文件服务器http://file.longmap.com/file/upload是我们的,是二级域名,是后端的人在管理,我这边只需要设置响应头就可以了吗/?还有就是解决这个问题主要是后端解决还是前端解决,如果是前端解决的话前端除了需要设置相应头外还需要做哪些工作“?[/quote]你不兼容ie就前端,你要兼容ie最好是通过服务器端来处理。 前端兼容ie不能用jquery,jquery不支持XDomainRequest的跨域兼容,需要自己写代码来兼容,目标网站设置那个请求头为*就行,或者你允许的域名 通过Access-Control-Allow-Origin控制允许ajax跨域请求的域名[/quote] 设置域名头不行,文字可以,文件不行。现在正在看ajaxfileupload[/quote] ajax原本就传递不了文件,要结合html5的FormData才行。[/quote]formData好像传的是二进制,需要后台解析二进制文件吗?我使用了formData还是提示有跨域问题,但是在network里面的response里面看到请求成功了,但是result里面没有返回值。。[/quote] 还表单传值一样,只是你用的ajax,返回js代码不会执行之类的,服务器该怎么获取就怎么获取
lanlvy 2017-05-15
  • 打赏
  • 举报
回复
引用 8 楼 showbo 的回复:
[quote=引用 7 楼 u012514171 的回复:] [quote=引用 4 楼 showbo 的回复:] [quote=引用 3 楼 u012514171 的回复:] [quote=引用 1 楼 showbo 的回复:] 跨域没搞,除非http://file.longmap.com/file/upload是你的或者设置过Access-Control-Allow-Origin响应头允许你跨域访问 而且注意设置那个响应头的话IE用的是XDomainRequest对象,不是XMLHttpRequest对象
这个文件服务器http://file.longmap.com/file/upload是我们的,是二级域名,是后端的人在管理,我这边只需要设置响应头就可以了吗/?还有就是解决这个问题主要是后端解决还是前端解决,如果是前端解决的话前端除了需要设置相应头外还需要做哪些工作“?[/quote]你不兼容ie就前端,你要兼容ie最好是通过服务器端来处理。 前端兼容ie不能用jquery,jquery不支持XDomainRequest的跨域兼容,需要自己写代码来兼容,目标网站设置那个请求头为*就行,或者你允许的域名 通过Access-Control-Allow-Origin控制允许ajax跨域请求的域名[/quote] 设置域名头不行,文字可以,文件不行。现在正在看ajaxfileupload[/quote] ajax原本就传递不了文件,要结合html5的FormData才行。[/quote]formData好像传的是二进制,需要后台解析二进制文件吗?我使用了formData还是提示有跨域问题,但是在network里面的response里面看到请求成功了,但是result里面没有返回值。。
lanlvy 2017-05-15
  • 打赏
  • 举报
回复
引用 10 楼 xianghongai 的回复:
不允许跨域: - 同一域名,不同端口 - 同一域名,不同协议 - 域名和域名对应ip - 主域相同,子域不同 - 同一域名,不同二级域名 - 不同域名 这类问题最好丢给后台, 百度:跨域 上传文件
现在后台正在整,我这边看来是没办法了,不过我还是在继续查找方法,试了不少,都不行。行的只有form表单,但是跳转页面了获取不到返回值。
  • 打赏
  • 举报
回复
不允许跨域: - 同一域名,不同端口 - 同一域名,不同协议 - 域名和域名对应ip - 主域相同,子域不同 - 同一域名,不同二级域名 - 不同域名 这类问题最好丢给后台, 百度:跨域 上传文件
Go 旅城通票 2017-05-12
  • 打赏
  • 举报
回复
引用 7 楼 u012514171 的回复:
[quote=引用 4 楼 showbo 的回复:] [quote=引用 3 楼 u012514171 的回复:] [quote=引用 1 楼 showbo 的回复:] 跨域没搞,除非http://file.longmap.com/file/upload是你的或者设置过Access-Control-Allow-Origin响应头允许你跨域访问 而且注意设置那个响应头的话IE用的是XDomainRequest对象,不是XMLHttpRequest对象
这个文件服务器http://file.longmap.com/file/upload是我们的,是二级域名,是后端的人在管理,我这边只需要设置响应头就可以了吗/?还有就是解决这个问题主要是后端解决还是前端解决,如果是前端解决的话前端除了需要设置相应头外还需要做哪些工作“?[/quote]你不兼容ie就前端,你要兼容ie最好是通过服务器端来处理。 前端兼容ie不能用jquery,jquery不支持XDomainRequest的跨域兼容,需要自己写代码来兼容,目标网站设置那个请求头为*就行,或者你允许的域名 通过Access-Control-Allow-Origin控制允许ajax跨域请求的域名[/quote] 设置域名头不行,文字可以,文件不行。现在正在看ajaxfileupload[/quote] ajax原本就传递不了文件,要结合html5的FormData才行。
lanlvy 2017-05-12
  • 打赏
  • 举报
回复
引用 4 楼 showbo 的回复:
[quote=引用 3 楼 u012514171 的回复:] [quote=引用 1 楼 showbo 的回复:] 跨域没搞,除非http://file.longmap.com/file/upload是你的或者设置过Access-Control-Allow-Origin响应头允许你跨域访问 而且注意设置那个响应头的话IE用的是XDomainRequest对象,不是XMLHttpRequest对象
这个文件服务器http://file.longmap.com/file/upload是我们的,是二级域名,是后端的人在管理,我这边只需要设置响应头就可以了吗/?还有就是解决这个问题主要是后端解决还是前端解决,如果是前端解决的话前端除了需要设置相应头外还需要做哪些工作“?[/quote]你不兼容ie就前端,你要兼容ie最好是通过服务器端来处理。 前端兼容ie不能用jquery,jquery不支持XDomainRequest的跨域兼容,需要自己写代码来兼容,目标网站设置那个请求头为*就行,或者你允许的域名 通过Access-Control-Allow-Origin控制允许ajax跨域请求的域名[/quote] 设置域名头不行,文字可以,文件不行。现在正在看ajaxfileupload
lanlvy 2017-05-12
  • 打赏
  • 举报
回复
引用 5 楼 liushaojun1314 的回复:
1.在前台定义一个回调函数,如function jsoncallback(data){ 接收后台传过来的data即可 } 2.使用getJSONP('url?callback=jsoncallback', { 参数... } 3.后台定义与之对应的jsoncallback()方法处理业务即可
文字可以,文件不行
淡定哥哥哥 2017-05-11
  • 打赏
  • 举报
回复
1.在前台定义一个回调函数,如function jsoncallback(data){ 接收后台传过来的data即可 } 2.使用getJSONP('url?callback=jsoncallback', { 参数... } 3.后台定义与之对应的jsoncallback()方法处理业务即可
Go 旅城通票 2017-05-11
  • 打赏
  • 举报
回复
引用 3 楼 u012514171 的回复:
[quote=引用 1 楼 showbo 的回复:] 跨域没搞,除非http://file.longmap.com/file/upload是你的或者设置过Access-Control-Allow-Origin响应头允许你跨域访问 而且注意设置那个响应头的话IE用的是XDomainRequest对象,不是XMLHttpRequest对象
这个文件服务器http://file.longmap.com/file/upload是我们的,是二级域名,是后端的人在管理,我这边只需要设置响应头就可以了吗/?还有就是解决这个问题主要是后端解决还是前端解决,如果是前端解决的话前端除了需要设置相应头外还需要做哪些工作“?[/quote]你不兼容ie就前端,你要兼容ie最好是通过服务器端来处理。 前端兼容ie不能用jquery,jquery不支持XDomainRequest的跨域兼容,需要自己写代码来兼容,目标网站设置那个请求头为*就行,或者你允许的域名 通过Access-Control-Allow-Origin控制允许ajax跨域请求的域名
lanlvy 2017-05-11
  • 打赏
  • 举报
回复
引用 1 楼 showbo 的回复:
跨域没搞,除非http://file.longmap.com/file/upload是你的或者设置过Access-Control-Allow-Origin响应头允许你跨域访问 而且注意设置那个响应头的话IE用的是XDomainRequest对象,不是XMLHttpRequest对象
这个文件服务器http://file.longmap.com/file/upload是我们的,是二级域名,是后端的人在管理,我这边只需要设置响应头就可以了吗/?还有就是解决这个问题主要是后端解决还是前端解决,如果是前端解决的话前端除了需要设置相应头外还需要做哪些工作“?
lanlvy 2017-05-11
  • 打赏
  • 举报
回复

//提交添加的模型
            $('#fileSubmit').click(function(){
                //保存数据并返回模型页面
                var catedoryId = $('#type').val();
                var img = $('#modelIcon').val();
                //上传到文件服务器并取得返回的图片url
                $.ajaxSetup({
                    async:false
                });
             $.post('http://file.longmap.com/file/upload',{folderUrl:img},function(data){
                    alert(data.result);  //就是这个请求出现了跨域,不知道如何解决,
                    img = data.result;        //网上的资料很多链接打不开,不知道是不是百度某个服务器挂掉了
                })
                var name = $('#name').val();
                var dataStr = {};
                dataStr.catedoryId = catedoryId;
                dataStr.img = img;
                dataStr.name = name;
                //添加模型
                $.post('/simulation/model/add',dataStr,function(data){
                    alert(data.msg);
                    window.location.href = '/simulation/page/list';
                })               
            })
这个可能清晰一点
Go 旅城通票 2017-05-10
  • 打赏
  • 举报
回复
跨域没搞,除非http://file.longmap.com/file/upload是你的或者设置过Access-Control-Allow-Origin响应头允许你跨域访问 而且注意设置那个响应头的话IE用的是XDomainRequest对象,不是XMLHttpRequest对象

87,921

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧