Spring MVC实现远程调用并获取返回值? 400 报错
ajax跨域请求:
$("#jifei").click(function() {
Tips.confirm("确认计费?", function() {
var cmd_uuid = $('input[name="cmd_uuid"]').val();
$.ajax({
url : "http://127.0.0.1:8083/tally/command/tally-order-reset",
data : {
"cmd_uuid" : cmd_uuid
},
type : "get",
success : function(re) {
Tips.tips(re.msg,re.success);
},
error : function(data) {
Tips.tips(data.msg+"返回失败");
}
});
});
在被请求项目里面的spring.xml中加上:(注意:这里需要引用spring4.2及版本更高的,否则不支持<mvc:cors>)
<mvc:cors>
<mvc:mapping path="/**" allowed-origins="*" allow-credentials="true" max-age="1800" allowed-methods="GET,POST,OPTIONS"/>
</mvc:cors>
如果添加了拦截器需要把/tally/command/tally-order-reset加上去:
<mvc:interceptor>
<mvc:mapping path="/**" />
<mvc:exclude-mapping path="/tally/command/tally-order-reset" />
<bean class="com.feiliks.hn.common.interceptor.PermissionInterceptor" />
</mvc:interceptor>
然后再被请求的tally-order-reset方法上面加上:@CrossOrigin 代码如下
@CrossOrigin(origins = "*", maxAge = 3600)
@RequestMapping("tally-order-reset")
@ResponseBody
public ResponseModel reset(Long cmd_uuid){
Boolean ret = true;
ret = this.redisDao.setIfAbsentValue("tally-order-reset:" + cmd_uuid.toString(), 1);
if (ret){
this.redisDao.expire("tally-order-reset:" + cmd_uuid.toString(), 3, TimeUnit.MINUTES);
this.tallyOrderService.reset(cmd_uuid);
this.redisDao.delKey("tally-order-reset:" + cmd_uuid.toString());
}else{
ErrorType et = this.redisDao.getHashValue(RedisCacheTableKey.KEY_ERROR_TYPE, "S0001", ErrorType.class)==null?new ErrorType("S0001") : this.redisDao.getHashValue(RedisCacheTableKey.KEY_ERROR_TYPE, "S0001", ErrorType.class);
return super.fail(et.getTrace(), et);
}
return super.success("计费成功!");
}
通过以上方法,就能够实现ajax跨域请求并能够获取返回值,希望能给大家帮助。
ajax跨域不是浏览器的限制吗,为什么后台可以解决呢?######回复<aclass="referer"target="_blank">@大河向东流啊:关键是你的ajax跨域请求就到不了后台######如果你把项目做出来而这个功能有浏览器的限制,那用户知道怎么办吗,难道用户要处理浏览器的限制吗?显然是不可能的,后台处理了就不必管浏览器了######
添加架构师交流圈,请加微信号 codingcx,也可以添加java技术交流QQ群号318815519,大家一起快乐交流技术,互相学习分享。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。