Spring MVC实现远程调用并获取返回值? 400 报错-问答-阿里云开发者社区-阿里云

开发者社区> 爱吃鱼的程序员> 正文

Spring MVC实现远程调用并获取返回值? 400 报错

2020-05-30 20:58:48 196 1

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跨域请求并能够获取返回值,希望能给大家帮助。

取消 提交回答
全部回答(1)
  • 爱吃鱼的程序员
    2020-05-31 13:07:06

    ajax跨域不是浏览器的限制吗,为什么后台可以解决呢?######回复 @大河向东流啊 : 关键是你的ajax跨域请求就到不了后台######如果你把项目做出来而这个功能有浏览器的限制,那用户知道怎么办吗,难道用户要处理浏览器的限制吗?显然是不可能的,后台处理了就不必管浏览器了######

    添加架构师交流圈,请加微信号 codingcx,也可以添加java技术交流QQ群号318815519,大家一起快乐交流技术,互相学习分享。

    0 0
相关问答

40

回答

[@徐雷frank][¥20]什么是JAVA的平台无关性

大河人家 2018-10-29 23:55:20 144279浏览量 回答数 40

162

回答

惊喜翻倍:免费ECS+免费环境配置~!(ECS免费体验6个月活动3月31日结束)

豆妹 2014-10-29 17:52:21 223006浏览量 回答数 162

8

回答

OceanBase 使用动画(持续更新)

mq4096 2019-02-20 17:16:36 333882浏览量 回答数 8

13

回答

[@饭娱咖啡][¥20]我想知道 Java 关于引用那一块的知识

心意乱 2018-10-31 18:44:12 142138浏览量 回答数 13

110

回答

OSS存储服务-客户端工具

newegg11 2012-05-17 15:37:18 292297浏览量 回答数 110

22

回答

爬虫数据管理【问答合集】

我是管理员 2018-08-10 16:37:41 146789浏览量 回答数 22

18

回答

阿里云开放端口权限

xcxx 2016-07-20 15:03:33 643142浏览量 回答数 18

31

回答

[@倚贤][¥20]刚学完html/css/js的新手学习servlet、jsp需要注意哪些问题?

弗洛伊德6 2018-10-27 21:52:43 145629浏览量 回答数 31

10

回答

[@墨玖tao][¥20]为什么流式处理框架都是 java 写成的,JVM 是不是在流和批存在着特殊优势。还有分布式资源调度,感觉Mesos 的成长速度跟不上 Yarn。这是为什么?

管理贝贝 2018-10-23 13:18:03 136131浏览量 回答数 10

249

回答

阿里云LNAMP(Linux + Nginx + Apache + MySQL + PHP)环境一键安装脚本

云代维 2014-02-14 15:26:06 302609浏览量 回答数 249
+关注
爱吃鱼的程序员
https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB
2
文章
21569
问答
推荐问答
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载