跨域请求数据(知识点)

跨域请求数据

(1):通过jsonp

在js中,直接设置XMLHttpRequest请求不同区域的数据时是不可以的;
但是在页面引入不同域上的js脚本文件是可以的;
看到获取数据的地址后面还有一个callback参数,按惯例是用这个参数;
如果获取数据的jsonp地址页面不是你自己能控制的,就得按照提供数据哪一方的规格来操作

使用jquery,不需要手动的插入script标签以及定义的回调函数,
jquery会自动生成一个全局函数来替换callback=? 中的,
之后获取到数据后又自动销毁,实际上是一个临时代理的作用;

$.getJSON方法会自动判断是否跨域,不跨域的话,就调用普通的ajax方法;
跨域的话,则以异步加载js文件的形式来调用jsonp的回调函数;

(2):通过document.domain来跨子域

(3):使用window.name进行跨域

window对象有个name属性,该属性有个特征:在一个窗口的生命周期内,
窗口载入的所有的页面都是共享一个window.name的,
每个页面对window.name都有读写的权限,window.name是持久存在一个窗口
载入过的所有页面中的,并不会因为新页面的载入而进行重置;

window.name的值只能是字符串的形式
window.name = ‘可以传递一个json数据’;

(4):使用HTML5中新引进的window.postMessage方法来跨域传送数据

方法 : window.postMessage(message,targetOrigin)
方法的第一个参数message为要发的信息,类型只能为字符串;

第二个参数targetOrigin用来限定接收消息的那个window对象所在的域,
如果不限定域,可以使用统配符;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值