欢迎来到代码驿站!

JAVA代码

当前位置:首页 > 软件编程 > JAVA代码

java web支持jsonp的实现代码

时间:2020-12-06 09:04:28|栏目:JAVA代码|点击:

跨域说明

跨域指请求和服务的域不一致,浏览器和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 暴露的信息

上一篇:Java发送邮件遇到的常见需求汇总

栏    目:JAVA代码

下一篇:java list与数组之间的转换详细解析

本文标题:java web支持jsonp的实现代码

本文地址:http://www.codeinn.net/misctech/29853.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有