Java实现Jsonp跨域原理简单介绍

什么跨域

指的是服务器不一样,域名不同,端口号不同

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'})
         */
    }
}

你可能感兴趣的:(json)