跨域问题

跨域问题

出于安全考虑,html的同源策略不允许JavaScript进行 跨域操作。
- 跨域通信一般分为两类
- 一类是hack,通过title, navigation等对象传递信息,jsonp就是其中最优秀的一个hack.
- 另一类就是html5的支持,一个是Access-Control-Allow-Origin响应头,一个是window.post Message。
- 设置document.domain
- 原理:相同主域名不同子域名下的页面,可以通过设置document.domain让他们同域
- 限制:同域document提供的是页面间的互操作,需要载入iframe
- document.domain只能从子域设置到主域,往下设置或往其他子域设置是不允许的。
- 有src标签。
- 原理:所有具有src属性的html标签都是可以跨域的包括《img》《script》
- 限制:需要创建一个DOM对象,且只能用于get方法。
- 在document.body中append一个具有src属性的HTML标签,src属性值指向的URL会以GET方法被访问,该访问时可以跨域的
- img在更改src属性是就会发起请求,而script,iframe,link等只有在添加到DOM树后才会发起http 请求
- jsonp
- 原理:

// URL: http://a.com/foo
var win = window.open('http://b.com/bar');
win.postMessage('Hello, bar!', 'http://b.com'); 
// URL: http://b.com/bar
window.addEventListener('message',function(event) {
    console.log(event.data);
});
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值