淘淘商城系列——jsonp的原理及两种实现方式
首先,说下什么是跨域?有以下两种方式的跨域:
解决js的跨域问题可以使用jsonp。那接下来说下什么是jsonp? // 传统支持jsonp的方案
@RequestMapping(value="/user/token/{token}",produces=MediaType.APPLICATION_JSON_UTF8_VALUE)
@ResponseBody
public String getUserByToken(@PathVariable String token,String callback) {
TaotaoResult result = userLoginService.getUserByToken(token);
if (StringUtils.isNotBlank(callback)) {
// 客户端为jsonp请求,需要返回js代码
String jsonResult = callback + "(" + JsonUtils.objectToJson(result) + ");";
return jsonResult; // 统一返回字符串
}
return JsonUtils.objectToJson(result); // 统一返回字符串
}
好了,代码修改完了,我们现在重启taotao-sso-web工程,重启后,我们刷新淘淘商城首页,发现页面正常显示用户的姓名了!!注意,如果你这时还显示不出来,是因为token已经过期了,你需要重新登录一下,这样就可以看到了。 // 方法二,从4.1以上版本才可以使用
@RequestMapping(value="/user/token/{token}")
@ResponseBody
public Object getUserByToken(@PathVariable String token,String callback) {
TaotaoResult result = userLoginService.getUserByToken(token);
if (StringUtils.isNotBlank(callback)) {
// 设置要包装的数据
MappingJacksonValue mappingJacksonValue = new MappingJacksonValue(result);
// 设置回调方法
mappingJacksonValue.setJsonpFunction(callback);
return mappingJacksonValue;
}
return result;
}
我们重启下taotao-sso-web工程,然后重新刷新下淘淘商城首页,如下图所示,发现也可以正常显示用户名! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |