跨域的处理

用的是jsonp:实质上跨域的处理是存在2种一种是jQuery中对跨域的处理,一种是js中对跨域的处理

json是一种轻量级的数据交换格式,而jsonp(json with padding)则是json的一种使用模式

jsonp跨域原理

【在同源策略下,在某个服务器下的页面是无法获取到该服务器以外的数据的,单img,script等标签是个例外,这些标签可以通过src属性请求到其他服务器上的数据,利用script标签的开放策略,可以实现跨域请求的数据。跨域是指:跨域名、跨端口、跨协议。指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对javaScript施加的安全限制

1:在jquery中如何通过jsonp来处理跨域获取数据?

方法一:在ajax函数中设置data的类型为jsonp即:

$.ajax({

datatype:"jaonp",

url:'',

})

使用jsonp解决跨域虽然简单,但是安全性问题仍然存在着隐患,要确定jsonp请求是否失败并不容易

2:js处理跨域获取数据的方式有3种:
一:基于iframe的

demo1.html页面

document.domain = 'aaa.com';

function a(){

alert('');

}

<iframe src="***/demo2.html" id='q'></iframe>

document.getElementById('q').onload = function(){

var e=document.getElementById('q').comtentWindow;

e.bbb();

}


demo2.html页面

document.domain = 'aaa.com'

function bbb(){

alert('处理一些事情');

}

此时demo1.html里面就可以调用bbb函数了。。。。

二:web sockets

虽然他是一种浏览器的api,他的目标是在一个单独的持久的链接上面提供全双工、双向通信,但是同源策略对ta 不适用

此数据的获取,只有在支持他的协议的服务器上面才能正常工作。

【原理:js创建web socket之后,会有一个http请求发送到浏览器,发送链接,服务器相应之后,建立的链接会使http转换成web scoket协议 】

var socket = new WebSocket('aa://www.baidu.com');【http-->aa;https--->aaa】

socket.send('哈哈哈哈哈);

socket.onmessage = function(event){

var data = event.data;

}

javascript跨域通信

同源:两个文档同源需满足

  1. 协议相同
  2. 域名相同
  3. 端口相同

跨域通信:js进行DOM操作、通信时如果目标与当前窗口不满足同源条件,浏览器为了安全会阻止跨域操作。跨域通信通常有以下方法

  • 如果是log之类的简单单项通信,新建<img>,<script>,<link>,<iframe>元素,通过src,href属性设置为目标url。实现跨域请求
  • 如果请求json数据,使用<script>进行jsonp请求
  • 现代浏览器中多窗口通信使用HTML5规范的targetWindow.postMessage(data, origin);其中data是需要发送的对象,origin是目标窗口的origin。window.addEventListener(‘message’, handler, false);handler的event.data是postMessage发送来的数据,event.origin是发送窗口的origin,event.source是发送消息的窗口引用
  • 内部服务器代理请求跨域url,然后返回数据
  • 跨域请求数据,现代浏览器可使用HTML5规范的CORS功能,只要目标服务器返回HTTP头部Access-Control-Allow-Origin: *即可像普通ajax一样访问跨域资源

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值