ajax异步跨域上传文件,并显示上传进度

一般ajax跨域请求:
解决方法1
getResponse().setHeader("Access-Control-Allow-Origin", "*");//允许跨域访问

解决方法2
$.ajax({
url:"http://192.168.1.52/cpsystem/upload/getJson.action?callback=?", // callback 为ajax自动传来的
type : 'get',
dataType : 'json',
async : false,
success : function(data) {
alert(data.c)
}
})
response.getWriter().write( callback+"({\"c\":11,\"d\":22,})"); // callback为ajax自动传来的 如;jQuery180003636442424110131_1474600184379
解决方法3:服务器转发





特殊情况:
如异步跨域上传文件并显示进度,
首先浏览器自动发OPTIONS请求进行响应头验证,后台对应方法最前加上以下代码让OPTION请求通过验证
String method = getRequest().getMethod();
if( method.equalsIgnoreCase("options") ){
getResponse().setHeader("Access-Control-Allow-Origin", "*");//允许跨域访问
getResponse().setHeader("Access-Control-Allow-Methods","GET,POST,OPTIONS");
return null; //只验证,不进行业务代码
}
//处理post请求代码
....
然后 浏览器再发实际的ajax 异步post文件请求, 后台的同一个方法对 post过来的文件进行保存,
同时response也要进行
setHeader("Access-Control-Allow-Origin", "*");//允许跨域访问
setHeader("Access-Control-Allow-Methods","GET,POST,OPTIONS");

总体模板
if( method.equalsIgnoreCase("options") ){
getResponse().setHeader("Access-Control-Allow-Origin", "*");//允许跨域访问
getResponse().setHeader("Access-Control-Allow-Methods","GET,POST,OPTIONS");
return null; //只验证,不进行业务代码,只要求响应头.(内容可以响应一个空的json)
}
//处理post请求,保存文件等代码
....
getResponse().setHeader("Access-Control-Allow-Origin", "*");//允许跨域访问
getResponse().setHeader("Access-Control-Allow-Methods","GET,POST,OPTIONS");







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值