什么情况会出现js跨域
1.域名不同
2.域名相同,端口不同
解决js跨域问题可以使用jsonp
jsonp不是新技术,跨域的解决方案。使用js的特性绕过跨域请求。js可以跨域加载js文件。
jsonp原理:
具体做法:
门户工程的js:
添加
dataType : “jsonp”
单点登录表现层:
@RequestMapping(value = “/user/token/{token}”,method=RequestMethod.GET,
//指定返回响应数据的content-type
produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@ResponseBody
public String getUserByToken(@PathVariable String token,String callback){
TaotaoResult result = userService.getUserByToken(token);
//判断是否为jsonp请求
if(StringUtils.isNotBlank(callback)){
return callback+"("+ JsonUtils.objectToJson(result)+");";
}
return JsonUtils.objectToJson(result);
}