搜索热词
Rest api 跨域访问 前后端实现
客户端:
function getIP(){
$.ajax({
url:"http://localhost:8911/api/getinfo",type:"get",jsonp:'jsonpcallback',dataType:"jsonp",//跨域必须用jsonp
cache:false,success: function(obj){
alert(obj.ip+obj.mac);
}
});
}
服务器端:jersey对jsonp的支持
@GET
@Path("getinfo")
@Produces("application/json")
public String getInfo(@QueryParam("jsonpcallback") String jsonpcallback){
String mac="",ip="";
try {
mac = Util.getMac();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ip = Util.getIp();
return jsonpcallback+"({\"ip\":\""+ip+"\",\"mac\":\""+mac+"\"})";
}
1.jsonp只能使用get请求,解决同源问题,返回javascript代码,因为请求javascript文件是没有同源问题的。
2.当请求数据类型为jsonp时,会将callback=jsonpCallback加在url上,http://localhost:8911/api/getinfo?callback=jsonpCallback
3.前台javascript中定义jsonpCallback函数,此函数必须定义在window下,也就是全局的函数,否则找不到。
4.后台获取请求的callback参数值jsonpCallback,返回字符串"jsonpCallback(result)",result为返回结果。
5.请求返回的是script tag,首先会调用jsonpCallback函数,不管是否找到该函数,都会调用success函数。
6.如果没有定义jsonp和jsonpCallback,jsonp默认为"callback",jsonpCallback会是Jquery自动生成的函数名。 参考
总结
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢寻找一群志同道合、互帮互助的学习伙伴,可以点击下方链接加入:
编程之家官方1群
编程之家官方2群
编程之家官方3群
编程之家官方4群