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的更多相关文章
- 跨域 - 自定义 jsonp实现跨域
问题:在现代浏览器中默认是不允许跨域. 办法:通过jsonp实现跨域 在js中,我们直接用XMLHttpRequest请求不同域上的数据时,是不可以的.但是,在页面上引入不同域上的js脚本文件却是 ...
- jquery跨域解决方案JSONP
1.在互联网中我们的计算机是通过IP来定位的,但是IP比较难记忆,因此通过domain name(域名)来取代IP 2.什么是跨域? (1)默认浏览器为了安全问题,禁止了xmlhttprequest跨 ...
- JS跨域:jsonp、跨域资源共享、iframe+window.name
JS跨域:jsonp.跨域资源共享.iframe+window.name :https://www.cnblogs.com/doudoublog/p/8652213.html JS中的跨域 请求跨域有 ...
- jQuery(三) javascript跨域问题(JSONP解决)
加油~ --WH 一.什么是javascript跨域问题? 域:服务器域名,唯一标识(协议,域名,端口)必须保证一致,说明域相同 跨域:在一个服务器上,去访问另一个服务器上,并且得到另一个服务器返回回 ...
- 浏览器同源策略,跨域请求jsonp
浏览器的同源策略 浏览器安全的基石是"同源政策"(same-origin policy) 含义: 1995年,同源政策由 Netscape 公司引入浏览器.目前,所有浏览器都实行这 ...
- 跨域Ajax -- jsonp和cors
跨域Ajax - jsonp - cors 参考博客: http://www.cnblogs.com/wupeiqi/articles/5703697.html http://www.cnblogs. ...
- Ajax跨域:Jsonp实例--百度搜索框下拉提示
Ajax跨域:Jsonp实例--百度搜索框下拉提示 一.总结 一句话总结:a.找好接口:b.用script标签的src引入文件(json数据):c.定义及实现上一步引入文件中的函数 1.如何找到一个网 ...
- 【记录】ajax跨域问题jsonp正确的使用方式
最近遇到ajax请求跨域问题,解决方案用jsonp,现记录如下: //跨域请求jsonp封装 function doJsonPostCallBack(type, url, data,async, ca ...
- cors跨域和jsonp劫持漏洞 和 同源策略和跨域请求解决方案
cors跨域和jsonp劫持漏洞: https://www.toutiao.com/a6759064986984645127/ 同源策略和跨域请求解决方案:https://www.jianshu.co ...
随机推荐
- 迁移桌面程序到MS Store(2)——Desktop App Converter
迁移传统桌面程序到MS Store的另一种方式是使用Desktop App Converter工具.虽然本篇标题包含了Desktop App Converter(以下简称DAC),实际上我是来劝你别用 ...
- 通过javascript 直接播放amr格式的语言
前段时间做了个功能(有2.3个月了,突然想起来了,就记录一下),语言播放.一开始觉得很简单~~~ 计划应用的是H5的audio标签,但因为这个标签不支持amr格式的语言,但是手机端传到后台的录音却都是 ...
- 跟着刚哥学习Spring框架--通过XML方式配置Bean(三)
Spring配置Bean有两种形式(XML和注解) 今天我们学习通过XML方式配置Bean 1. Bean的配置方式 通过全类名(反射)的方式 √ id:标识容器中的bean.id唯一. √ cl ...
- Linux 中指定启动 tomcat 的 jdk 版本
环境: RHEL6.5. tomcat8.5.jdk1.8.0_181 修改 catalina.sh.setclasspath.sh 文件 进入目录 $ cd /data01/server/apach ...
- vue项目常见需求(项目实战笔记)
一.起步 1.引入reset.css解决手机之间不同分辨率的问题(reset.css为别人封装的css文件) import './assets/styles/reset.css' 使用方式 1rem= ...
- cmd命令关闭占用程序的端口
遇到的问题: 在重新启动tomcat服务时,启动失败,显示的信息大概为:Error running 'cus_manager_system': Unable to open debugger port ...
- [POC]K8 DLLhijack Test
POC: 2016.11 Winrar却持 XP资源管理器却持 DLL却持VS全版本 https://www.cnblogs.com/k8gege/p/10261254.html POC:https: ...
- Redhat/CentOS 制作本地yum源
一.制作本地yum源的场景有: (1) 操作系统ISO文件是通过光驱读取的 (2) 操作系统ISO文件是通过USB设备挂载的 (3) 操作系统ISO文件是被上传到本地文件夹的形式 二. 这3种配置方式 ...
- spring cloud(服务消费者(利用ribbon实现服务消费及负载均衡)——初学二)
Ribbon是一个基于HTTP和TCP客户端的负载均衡器,利用ribbon实现服务消费,并实现客户端的负载均衡. 一.准备工作(利用上一节的内容) 启动服务注册中心 启动computer-servic ...
- Java8-用Lambda表达式给List集合排序
Lambda用到了JDK8自带的一个函数式接口Comparator<T>. 准备一个Apple类 public class Apple { private int weight; priv ...