跨域请求数据
(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对象所在的域,
如果不限定域,可以使用统配符;