跨域问题

来源:互联网 发布:网络集成与设计 编辑:程序博客网 时间:2024/06/08 08:24

跨域问题

出于安全考虑,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/foovar win = window.open('http://b.com/bar');win.postMessage('Hello, bar!', 'http://b.com'); 
// URL: http://b.com/barwindow.addEventListener('message',function(event) {    console.log(event.data);});
原创粉丝点击