SpringBoot项目开发(二十四):支持跨域请求JSONP_zhuyu19911016520-CSDN博客

沙海
沙海
沙海
2182
文章
2
评论
2021年4月28日12:06:15
评论
4 1204字阅读4分0秒
摘要

SpringBoot项目开发(二十四):支持跨域请求JSONP

SpringBoot项目开发(二十四):支持跨域请求JSONP

SpringBoot项目开发(二十四):支持跨域请求JSONP_zhuyu19911016520-CSDN博客

闪耀的瞬间
2018-10-26 15:51:40
SpringBoot项目开发(二十四):支持跨域请求JSONP_zhuyu19911016520-CSDN博客
496

SpringBoot项目开发(二十四):支持跨域请求JSONP_zhuyu19911016520-CSDN博客

收藏

1

分类专栏:
java
spring boot
SpringBoot 项目开发

版权

SpringBoot项目开发(二十四):支持跨域请求JSONP_zhuyu19911016520-CSDN博客

在SpringMVC4.1版本以后,Spring为我们提供了一个AbstractJsonpResponseBodyAdvice的类用来支持jsonp的数据,SpringBoot接收解析web请求是依赖于SpringMVC,所以也可以继承此类

代码如下,添加一个配置类,继承AbstractJsonpResponseBodyAdvice

@ControllerAdvice(basePackages = "com.lkh.tour.controller")
public class JsonpAdvice extends AbstractJsonpResponseBodyAdvice {

    public JsonpAdvice() {
        super("callback","jsonp");
    }
}
1234567

再写个测试Controller


@RestController
@RequestMapping("/test")
public class JsonpTestController {
 
    @RequestMapping(value = "/testJsonp",produces = MediaType.APPLICATION_JSON_VALUE)
    public Object testJsonp(){
        Map<String,String> map = new HashMap<>();
        map.put("name","zy");
        map.put("age","26");
        return map ;
    }
}
12345678910111213

当发送请求为:http://localhost:2000/test/testJsonp的时候,结果如下: SpringBoot项目开发(二十四):支持跨域请求JSONP_zhuyu19911016520-CSDN博客

当发送请求为:http://localhost:2000/test/testJsonp?callback=getData,结果如下: SpringBoot项目开发(二十四):支持跨域请求JSONP_zhuyu19911016520-CSDN博客

可以看到当我们在请求参数中添加callback参数的时候,返回的数据就是 jsonp 的 当请求参数中不带callback时,返回的数据是 json 的。可以让我们方便的灵活运用

再附加一个js的jsonp请求示例

<script type="text/javascript">
    function testJsonp() {
        $.ajax({
            type:'get',
            url:'http://localhost:2000/test/testJsonp',
            dataType:'jsonp',
            jsonp:"callback",
            success:function (data) {
                alert(data);
            },
            error:function (err) {
                alert('出现错误了!!!');
            }
        });
    }
</script>
12345678910111213141516

继续阅读
weinxin
资源分享QQ群
本站是一个IT技术分享社区, 会经常分享资源和教程; 分享的时代, 请别再沉默!
沙海
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: