java后台接口兼容jsonp格式数据-阿里云开发者社区

开发者社区> dy迷恋> 正文

java后台接口兼容jsonp格式数据

简介:
+关注继续查看

1、什么是JSONP

一般来说位于 server1.example.com 的网页无法与不是 server1.example.com的服务器沟通,而 HTML 的<script> 元素是一个例外。利用 <script> 元素的这个开放策略,网页可以得到从其他来源动态产生的 JSON 资料,而这种使用模式就是所谓的 JSONP。用 JSONP 抓到的资料并不是 JSON,而是任意的JavaScript,用 JavaScript 直译器执行而不是用 JSON 解析器解析。
        
JSONP是一种协议,为了解决客户端请求服务器跨域的问题,但是并非是正式的传输协议。该协议的一个要点就是允许用户传递一个callback参数给服务端,然后服务端返回数据时会将这个callback参数作为函数名来包裹住JSON数据,这样客户端就可以随意定制自己的函数来自动处理返回数据了。
我们使用JSONP也是为了解决接口的跨域问题,因为我们的接口可能会被别的合作方调用,但是让项目支持跨域请求是不安全的,因此我们要支持jsonp请求来让别人能够调用到我们的接口。若出现跨域的情况,我们的接口会报如下错误:No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access. The response had HTTP status code 500.

2、解决方式

ajax请求代码
$(function(){
        $("#btn").click(function(){
            $.ajax({
                url : "http://192.168.0.199/dsp/j/content?channel=ysjssh",
                type : "GET",
				contentType: 'application/json; charset=utf-8',
				jsonpCallback:"success_jsonpCallback",
                dataType : "jsonp", // 返回的数据类型,设置为JSONP方式
                jsonp : "callback", //指定一个查询参数名称来覆盖默认的 jsonp 回调参数名 callback
                success: function(callback){
                    alert(callback);
                }
            });
        });
    });
	function callback(data) { 
		alert(data) 
	} 
后台请求代码

        @RequestMapping(value = "/j/xxx", produces = "text/script;charset=UTF-8")
	@ResponseBody
	public String getxxx(HttpServletRequest request, HttpServletResponse response, String callback,) {
            Map<String, Object> resultMap = new HashMap<>();
            JSONObject object = new JSONObject(resultMap);
            return callback + "(" + object.toString() + ")";
}
划重点!!注意RequestMapping的注解内容,加入produces


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
ajax请求后台,返回json格式数据,模板!
添加一个用户的时候,需要找出公司下所有的部门,和相应部门下的角色,利用ajax请求,实现联动技术。将返回的json格式数据,添加到select标签下。           //加载出部门的信息            function loadGroup(){                            $.
921 0
YFIOServer 后台IO接口使用说明
YFIOServer 后台IO接口使用说明
329 0
java 解析json格式数据(转)
  2012-07-30 16:43:54|  分类: java |  标签:java  json  |举报|字号 订阅     有时候我们可能会用到json格式的数据进行数据的传输,那么我们怎么把接收到的数据解析出来呢?   下面有两种方法: 1、通过谷歌的Gson来进行解...
789 0
asp.net 服务器控件LinkButton等在后台代码中设置js事件或添加css样式
这个如果想在后台cs代码中控制不显示下划线,如下写法即可: this.Lk_AreaType.
770 0
+关注
2
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载