什么跨域
指的是服务器不一样,域名不同,端口号不同
JSONP原理
ajax请求受同源策略影响,不允许进行跨域请求,而script标签src属性中的链接却可以访问跨域的js脚本,利用这个特性,服务端不再返回JSON格式的数据,而是返回一段调用某个函数的js代码,在src中进行了调用,这样实现了跨域。
使用方式
请求页面
$.ajax({
url:"http://localhost:8080/getUser.do",
dataType:"jsonp",
type:"post",
success:function(data){
console.info(data);
}
})
被请求的服务器
@RequestMapping("getUser")
@ResponseBody
public String getUser(String callback){
User user = new User();
user.setId(1);
user.setName("xk");
String str = JSONObject.toJSONString(user);
if(StringUtils.isEmpty(callback)){
//如果没有传递参数,正常的返回对象
return str;//{id:1,name:'xk'}
}else{
//jsonp处理
return callback + "(" + str + ")";
/*
jQuery112402556373549774087_1533546824082({id:1,name:'xk'})
*/
}
}