=单点登陆跨域解决方案token通过以下2种方案传递
方案1:
前端:
<html>
<head>
<script src="http://libs.baidu.com/jquery/1.7.2/jquery.min.js"></script>
</head>
<body>
<h3 id="test">init...</h3>
</body>
<script type="text/javascript">
//定义回调函数,相当于上述说的“电话号码”
function myCallback(res){
alert(JSON.stringify(res));
}
</script>
<script src="http://localhost:8078/v1/userCertificationCenter/infoWithCallBack"></script>
//可以改成动态创建script,写入子系统cookie中token值
// var frame = document.createElement('script');
// frame.src = 'http://127.0.0.1:8081/web2/servlet/Web2Servlet?name=leo&age=30&callback=func';
//$('body').append(frame);
</html>
后端:
@ApiOperation("JSONP")
@GetMapping(value = "/infoWithCallBack")
public String infoWithCallBack(HttpServletRequest request, HttpServletResponse response) {
JSONObject map = new JSONObject();
map.put("msg","请求成功!");
map.put("code","0000");
map.put("data","获取到后端数据!");
String str = map.toString();
return "myCallback(" + str + ")";
}
方案2:
ajax/JSONP
前端:
<html>
<head>
<script src="http://libs.baidu.com/jquery/1.7.2/jquery.min.js"></script>
</head>
<body>
<h3 id="test">init...</h3>
<button type="button" onclick="test()">单击 </button>
</body>
<script type="text/javascript">
//定义回调函数,相当于上述说的“电话号码”
function myCallback(res){
alert("==="+JSON.stringify(res));
}
</script>
<!-- <script src="http://localhost:8078/v1/userCertificationCenter/infoWithCallBack"></script> -->
<script type="text/javascript">
function test(){
alert();
$.ajax({
type:'get',
dataType:"jsonp",
url:'http://localhost:8078/v1/userCertificationCenter/info3',
data:{},
contentType:'application/json;charset=utf-8',
jsonp:"callback", //指定回调函数的名字。一般不改这个,默认callback
jsonpCallback:"myCallback", //手动执行发送给服务器的callback参数名,否则由jquery自动帮我们生成,类似jQuery17207352806672191685_1544278219377
success:function(data){
alert("ajax: "+JSON.stringify(data));
}
});
}
</script>
</html>
后端:
/**
* 3.兼容jsonp和普通json请求
* @return
*/
@GetMapping("/info3")
public String info3(@RequestParam(name="callback",required = false) String callBack){
JSONObject map = new JSONObject();
map.put("msg","请求成功!");
map.put("code","0000");
map.put("data","获取到后端数据!");
String result = map.toString();
if(!StringUtils.isEmpty(callBack)){
//如果是json请求,则包裹上回调函数
return callBack + "(" + result + ")";
}
return result;
}