当前位置:   article > 正文

java中跨域问题的解决方案_app静态页面调用接口跨域

app静态页面调用接口跨域

跨域的解决方案

首先我们来想一想

为什么会有跨域这个名词的出现呢?

          跨域又是什么呢?为何要跨域?

          浏览器的同源策略又是什么?怎么解决?

          jsonp又是什么?

          跨域的原理又是什么呢?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

跨域:

浏览器对于javascript的同源策略的限制,例如a.cn下面的js不能调用b.cn中的js,对象或数据(因为a.cn和b.cn是不同域),所以跨域就出现了.

上面提到的,同域的概念又是什么呢??? 简单的解释就是相同域名,端口相同,协议相同
同源策略:

请求的url地址,必须与浏览器上的url地址处于同域上,也就是域名,端口,协议相同.

比如:我在本地上的域名是study.cn,请求另外一个域名一段数据

这个时候在浏览器上会报错:

这个就是同源策略的保护,如果浏览器对javascript没有同源策略的保护,那么一些重要的机密网站将会很危险~
study.cn/json/jsonp/jsonp.html
请求地址 形式 结果
http://study.cn/test/a.html 同一域名,不同文件夹 成功
http://study.cn/json/jsonp/jsonp.html 同一域名,统一文件夹 成功
http://a.study.cn/json/jsonp/jsonp.html 不同域名,文件路径相同 失败
http://study.cn:8080/json/jsonp/jsonp.html 同一域名,不同端口 失败
https://study.cn/json/jsonp/jsonp.html 同一域名,不同协议   失败

jsonp:

jsonp 全称是JSON with Padding,是为了解决跨域请求资源而产生的解决方案,是一种依靠开发人员创造出的一种非官方跨域数据交互协议。

一个是描述信息的格式,一个是信息传递双方约定的方法。

jsonp的产生:

1.AJAX直接请求普通文件存在跨域无权限访问的问题,不管是静态页面也好.

2.不过我们在调用js文件的时候又不受跨域影响,比如引入jquery框架的,或者是调用相片的时候

3.凡是拥有scr这个属性的标签都可以跨域例如

4.如果想通过纯web端跨域访问数据只有一种可能,那就是把远程服务器上的数据装进js格式的文件里.

5.而json又是一个轻量级的数据格式,还被js原生支持

6.为了便于客户端使用数据,逐渐形成了一种非正式传输协议,人们把它称作JSONP,该协议的一个要点就是允许用户传递一个callback 参数给服务端

java代码:

response.setContentType(“application/json;charset=UTF-8”);
ServletOutputStream out = response.getOutputStream();
out.write((request.getParameter(“callback”) + “(” + JSON.toJSONString(returnVo) + “)”).getBytes(“UTF-8”));

前端js:

$.ajax({
type: “get”,
url: url,
data:param,
dataType: “jsonp”,
crossDomain:true,
success: function(result) {
if (result && result.status == 1) {
var mkey = result.result;
if (mkey && mkey != “”) {
alert(‘ojbk’);
}
}
}
});

第一次写,望轻喷……

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/130612
推荐阅读
相关标签
  

闽ICP备14008679号