Spring 4.1+ 的 JSONP使用

如今的巨石应用已经越来越不行了,很多互联网在后期都会在用分布式的架构

那么在页面上不同的服务调用不同域名下的json是有问题的

(跨域:不同域名,相同域名但是不同端口)

JavaScript规范中提到的json是不能直接跨域调用,为了安全,但是能调用js片段

所以把json包装为一个js片段,也就是jsonp那么就能够跨域请求

在spring4.1后,提供了新的方法可以作为jsonp的调用

例:

 1 @RequestMapping(value="/list")
 2     @ResponseBody
 3     public Object getItemCatList(String callback) {
 4         ItemCatResult result = itemCatService.getItemCatList();
 5         if (StringUtils.isBlank(callback)) {
 6             //需要把result转换成字符串
 7             return result;
 8         }
 9         //如果字符串不为空,需要支持jsonp调用 spring4.1 以上可用
10         MappingJacksonValue mappingJacksonValue = new MappingJacksonValue(result);
11         mappingJacksonValue.setJsonpFunction(callback);
12         return mappingJacksonValue;
13     }

如图,这就是jsonp

那么只要在js需要调用jsonp的地方稍加处理就能够跨域调用数据了~

时间: 2024-10-29 19:35:57

Spring 4.1+ 的 JSONP使用的相关文章

Ajax+Spring MVC实现跨域请求(JSONP)JSONP 跨域

JSONP原理及实现 接下来,来实际模拟一个跨域请求的解决方案.后端为Spring MVC架构的,前端则通过Ajax进行跨域访问. 1.首先客户端需要注册一个callback(服务端通过该callback(jsonp)可以得到js函数名(jsonpCallback)),然后以JavaScript语 法的方式,生成一个function 2.接下来,将JSON数据直接以入参的方式,放置到function中,这样就生成了一段js语法文档,返回给客户端. 3.最后客户端浏览器动态的解析script标签,

Ajax+Spring MVC实现跨域请求(JSONP)

JSONP解释 在解释JSONP之前,我们需要了解下"同源策略"这个概念,这对理解跨域有帮助.基于安全的原因,浏览器是存在同源策略机制的,同源策略阻止从一个源加载的文档或脚本获取或设置另一个源加载额文档的属性.有点绕,说的简单点就是浏览器限制脚本只能和同协议.同域名.同端口的脚本进行交互. JSONP就是为了解决这一问题的,JSONP是英文JSON with Padding的缩写,是一个非官方的协议.他允许服务端生成script tags返回值客户端,通过javascript call

Ajax+Spring MVC实现跨域请求(JSONP)(转)

背景: AJAX向后台(springmvc)发送请求,报错:已阻止交叉源请求:同源策略不允许读取 http://127.0.0.1:8080/DevInfoWeb/getJsonp 上的远程资源.可 以将资源移动到相同的域名上或者启用 CORS 来解决这个问题. 百度一下,发现是遇到了跨域请求请求问题.搜集资料如下 JSONP解释 在解释JSONP之前,我们需要了解下"同源策略"这个概念,这对理解跨域有帮助.基于安全的原因,浏览器是存在同源策略机制的,同源策略阻止从一个源加载的文档或脚

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

什么是JSONP?,以及Spring对象MappingJacksonValue的使用方式 原文: https://blog.csdn.net/weixin_38111957/article/details/81842460 一,引言 最近小编在写这样一套服务端的代码,说白了就是提供数据和处理一些业务逻辑.这个服务端是单独的一个工程,提供给PC端,移动端(IOS,Android)等多个终端进行调用.在调试过程中发现这样的一个异常,才了解到我们的JS请求是不能跨域请求的.为了考虑安全性的问题,JS只

Spring mvc 实现jsonp和json数据类型

在使用springmvc开发rest接口的时候很方便,可以直接使用@ResponseBody注解,直接加在springmvc的控制器类的方法上,springmvc会直接为我们将返回的对象序列化成为json类型的数据, 但是有时候有的接口调用方需要我们直接返回jsonp类型的数据,这时候可能就会需要我们自己修改代码,比如获取请求参数callback属性,手动序列化返回的对象,然后用callback参数中的值和手动序列化之后的数据进行拼接,然后组装成jsonp类型的数据,但是有的接口调用方需要jso

Spring 4 官方文档学习(十五)CORS支持

1.介绍 由于安全原因,浏览器禁止AJAX请求不在当前域内的资源.例如,你在一个浏览器标签中检查你的银行账户时,可能在另一个标签中打开了evil.com .来自evil.com的脚本绝对不可以用AJAX请求你的银行API! Cross-origin resource sharing (CORS) 是一个W3C specification,大多数浏览器都已经实现了该功能,可以让你以一种弹性的方式指定哪些跨域请求是被授权的,而不是用一些不怎么安全或不怎么强大的手段 -- 如IFRAME或JSONP.

Spring框架文档与API(4.3.6版本)

http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/ Table of Contents I. Overview of Spring Framework 1. Getting Started with Spring 2. Introduction to the Spring Framework 2.1. Dependency Injection and Inversion of Contr

spring MVC的一些小技巧

1,在controller中获取指定name的bean /*** * * @param request * @param beanName : 例如 userDao ,adminDao * @return */ public Object getBean(HttpServletRequest request,String beanName){ WebApplicationContext webApp=RequestContextUtils.getWebApplicationContext(req

Spring版本功能变更&Spring4.x的新特性

有朋友想知道Spring不同版本都有哪些功能变更,说直接在百度搜索找到的结果都不是想要的,其实还是关键词不对,找Spring不同版本的新特性就能获得更好的结果.其实在Spring工程github的wiki上也有说明,只是没那么显眼,放一个链接:https://github.com/spring-projects/spring-framework/wiki/What%27s-New-in-the-Spring-Framework What's New in Spring Framework 5.x