码迷,mamicode.com
首页 > 移动开发 > 详细

JSONP以及Spring对象MappingJacksonValue的使用方式

时间:2018-10-22 17:57:07      阅读:266      评论:0      收藏:0      [点我收藏+]

标签:utf-8   text   meta   逻辑   opera   for   header   端口号   alt   

 

什么是JSONP?,以及Spring对象MappingJacksonValue的使用方式


原文: https://blog.csdn.net/weixin_38111957/article/details/81842460

一,引言

最近小编在写这样一套服务端的代码,说白了就是提供数据和处理一些业务逻辑。这个服务端是单独的一个工程,提供给PC端,移动端(IOS,Android)等多个终端进行调用。在调试过程中发现这样的一个异常,才了解到我们的JS请求是不能跨域请求的。为了考虑安全性的问题,JS只能访问相同域名,相同端口号的地址。但是JS能跨域请求JS,正好利用了这个因素,才有了JSONP这个解决方案。错误提示信息如下:

Failed to load http://127.0.0.1:8081/rest/itemcat/all?callback=category.getDataService: No ‘Access-Control-Allow-Origin‘ header is present on the requested resource. Origin ‘http://localhost:8082‘ is therefore not allowed access.

二,什么是JSONP?

JSONP其实是解决JS跨域调用数据的一种方案,JS跨域直接请求数据是不可以的,但是JS跨域请求JS脚本是可以的。可以把返回的数据封装成一个JS脚本,把数据作为。参数传递到这个方法中,做一个方法的调用的js跨域请求可以得到此脚本数据,从而获取到想要到数据。执行流程如下:

技术分享图片

三,JSONP使用方式

那使用JSONP请求服务端,那服务端该怎么返回数据呢看如下代码:

再给大家科普小知识:在使用RequestMapping注解的时候,也可以设置返回JSON数据的字符编码哟!

produce = MediaType.APPLICATION_JSON_VALUE +“; charset = utf-8“

在这只提供了服务端怎么写,具体JS怎么调用麻烦各位小伙伴自行学习下,因为调用是前端工程师写的,没源码给我,如果有小伙伴实在没找到,那就在评论区留言,小编回头找前端工程师要要哈哈!

  1. @RequestMapping(value = "/itemcat/all" ,produces = MediaType.APPLICATION_JSON_VALUE+";charset=utf-8")
  2. @ResponseBody
  3. public Object getItemCatList(String callback){
  4. //需要返回的数据
  5. CatResult itemCat = itemCatService.getItemCat();
  6.  
  7. //callback 这个是js调用时传过来的参数,内容就是回调的方法名
  8.  
  9. //第一种方式 ,把我们返回的数据转JSON后,然后拼接我们在js中定义的方法名,把json数据作为参数传递进去
  10. //返回 String
  11. /*String jsonStr = JsonUtils.objectToJson(itemCat);
  12. return callback + "("+jsonStr+");";*/
  13.  
  14. //第二种方式,使用Spring自带对象,前提是需要在Srping4.0的版本才有的哟。
  15. //返回 Object
  16. MappingJacksonValue mappingJacksonValue = new MappingJacksonValue(itemCat);
  17. mappingJacksonValue.setJsonpFunction(callback);
  18. return mappingJacksonValue;

 

JSONP以及Spring对象MappingJacksonValue的使用方式

标签:utf-8   text   meta   逻辑   opera   for   header   端口号   alt   

原文地址:https://www.cnblogs.com/libin6505/p/9831076.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!