首页 > 开发 > Java > 正文

java web支持jsonp的实现代码

2024-07-14 08:42:56
字体:
来源:转载
供稿:网友

跨域说明

跨域指请求和服务的域不一致,浏览器和H5的ajax请求有影响,而对服务端之间的http请求没有限制。
跨域是浏览器拦截了服务器端返回的相应,不是拦截了请求。

jsonp跨域请求处理

Jsonp(JSON with Padding) 是 json的一种"使用模式",可以让网页从别的域名(网站)那获取资料,绕过同源策略(若地址里面的协议、域名和端口号均相同则属于同源),即跨域读取数据。

jsonp:利用script标签可以跨域,让服务器端返回可执行的Javascript函数,参数为要回发的数据。可看做带有回调函数的ajax请求。

js代码

<script type="text/javascript"> $(function(){     /*   //简写形式,效果相同   $.getJSON("http://app.example.com/base/json.do?sid=1494&busiId=101&jsonpCallback=?",       function(data){         $("#showcontent").text("Result:"+data.result)   });   */   $.ajax({     type : "get",     async:false,     url : "http:/XXX",     dataType : "jsonp",//数据类型为jsonp     jsonp: "jsonpCallback",//服务端用于接收callback调用的function名的参数     jsonpCallback:"自定义回调函数名"    success : function(data){       alert(data.info)     },     error:function(){       alert('fail');     }   });  }); </script>

java后端处理代码

@ResponseBody  @RequestMapping(value = "/url", produces= MediaType.APPLICATION_JSON)  public String test(            HttpServletRequest request,            HttpServletResponse response) throws Exception{    String result = getResult();    response.setHeader("Pragma", "no-cache");    response.setHeader("Cache-Control", "private,no-cache,no-store,max-age=0");    response.setDateHeader("Expires", 0);    String str=request.getParameter("jsonpCallback");    if (str==null||str.equals("")) {      return result;    } else {      return str + "(" + result + ")";    }  }

CORS(协议跨域资源共享)(Cross-origin resource sharing)

它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制 详细介绍 戳此

  • Access-Control-Allow-Origin:* 允许所有域名的脚本访问该资源
  • Access-Control-Allow-Methods:GET,POST,PUT,DELETE,OPTIONS 运行什么方式访问资源
  • Access-Control-Expose-Headers:x-requested-with 暴露的信息

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持VeVb武林网。


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表