使用场景:
在处理客户端跨域请求时,可以使用JSONP(JSON with Padding)资料格式,该方式允许我们在客户端使用get方式配合服务器端,实现跨域请求。
JSONP存在的原因:
首先基于安全的原因,浏览器是存在同源策略这个机制的,同源策略阻止从一个源加载的文档或脚本获取或设置另一个源加载的文档的属性。但我们可根据<script/> 标签引用远程资源获得灵感
<script src="http://ajax....com/ajax/jquery/jquery-1.7.0.js" type="text/javascript"></script>
通过使用<script/> 标签来绕过浏览器的同源策略。主要是利用了 <script/> 标签对 javascript 文档的动态解析来实现。
以jquery+springmvc为例:
客户端
$.ajax({ url : "http://localhost:8888/demo/queryUser", type : "GET", dataType:"jsonp", jsonpCallback:"jsonpCallback", success : function(data) { alert(data); } });
服务端
@RequestMapping(value = "/demo/queryUser")
@ResponseBody
public JSONPObject queryUser(@RequestParam String jsonpCallback,@RequestParam String param) {
List<User> userList=queryUserList(param);
return new JSONPObject(jsonpCallback, userList);
}