加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

jsonp ajax jersey 跨域访问

发布时间:2020-12-16 19:07:01 所属栏目:百科 来源:网络整理
导读:Rest api 跨域访问 前后端实现 客户端: pre name="code" class="java"scriptfunction getIP(){$.ajax({url:"http://localhost:8911/api/getinfo",type:"get",jsonp:'jsonpcallback',dataType:"jsonp",//跨域必须用jsonp cache:false,success: function(obj)

Rest api 跨域访问 前后端实现

客户端:

<pre name="code" class="java"><script>
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);
	}
});
} 
</script>


 
 

服务器端: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自动生成的函数名。
    参考

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读