java 跨域-利用jsonp
Posted 奶茶好喝的
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 跨域-利用jsonp相关的知识,希望对你有一定的参考价值。
Tomcat在 7.0.73, 8.0.39, 8.5.7 版本之前的可以用,不然后台报错
/** * 前端首页跳转后台 */ @RequestMapping("WebIndex.get") @ResponseBody public String WebIndex(HttpServletRequest request,HttpServletResponse response){ response.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); //数据 List studentList = new ArrayList<>(); studentList.add("wu1"); studentList.add("wu2"); studentList.add("wu3"); String result=new Gson().toJson(studentList); //前端传过来的回调函数名称 String callback = request.getParameter("callback");
String callback2 = request.getParameter("name");//获得前端的参数 System.out.println(callback2); //用回调函数名称包裹返回数据,这样,返回数据就作为回调函数的参数传回去了 result = callback + "(" + result + ")"; logger.debug("前端首页跳转后台"); return result; }
返回的参数 result = callback + "(" + result + ")"; 括号里的result必须是Json字符串形式,我在这纠结了一整天
前端用jq的ajax 即可 ,虽然失败不会走error路线,但是保证成功就行
<script> window.onload=function(){ //url格式:地址?openid=密码&nickname=账号,split进行分割 var url = decodeURI(window.location.href); var argsIndex = url.split("?openid="); var argsIndex2 = argsIndex[1].split("&nickname="); var openid = argsIndex2[0]; var nickname = argsIndex2[1]; alert("openid="+openid+"---"+"nickname="+nickname) var ip = getip(); ip += "WebIndex.get"; var reqBody = { username: "id", password: "pwd" }; var sendJson = { body: reqBody } $.ajax({ url: ip, type: "GET", dataType: "jsonp", //指定服务器返回的数据类型 data:{ ‘name‘:‘zuzuzu‘ }, success: function (data) { var result = JSON.stringify(data); //json对象转成字符串 alert(result); } }); } //获得Ip地址 function getip() { if(window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp = new XMLHttpRequest(); } else { // code for IE6, IE5 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.open("GET", "../ip.xml", false); xmlhttp.send(); xmlDoc = xmlhttp.responseXML; var ip = xmlDoc.getElementsByTagName("root")[0].childNodes[0].nodeValue; return ip } </script>
getip方法是从xml里读取地址,本方法是从后台重定向过来的,附带了参数,所以先进行拆分后面跟着的参数,不需要的可以直接看ajax,Tomcat服务器版本有要求,要注意看
以上是关于java 跨域-利用jsonp的主要内容,如果未能解决你的问题,请参考以下文章