前言
本文主要给大家介绍了关于web开发之跨域的解决方案,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。
什么是跨域?
概念如下:只要协议、域名、端口有任何一个不同,都被当作是不同的域
下面是具体的跨域情况详解
URL | 说明 | 是否允许通信 |
---|---|---|
http://www.a.com/a.js、http://www.a.com/b.js | 同一域名下 | 允许 |
http://www.a.com/lab/a.js、http://www.a.com/script/b.js | 同一域名下不同文件夹 | 允许 |
http://www.a.com:8000/a.js、http://www.a.com/b.js | 同一域名,不同端口 | 不允许 |
http://www.a.com/a.js、https://www.a.com/b.js | 同一域名,不同协议 | 不允许 |
http://www.a.com/a.js、http://70.32.92.74/b.js | 域名和域名对应ip | 不允许 |
http://www.a.com/a.js、http://script.a.com/b.js | 主域相同,子域不同 | 不允许(cookie这种情况下也不允许访问) |
http://www.a.com/a.js、http://a.com/b.js | 同一域名,不同二级域名(同上) | 不允许(cookie这种情况下也不允许访问) |
http://www.cnblogs.com/a.js、http://www.a.com/b.js | 不同域名 | 不允许 |
一、document.domain跨域
原理:相同主域名不同子域名下的页面,可以设置document.domain
让它们同域
限制:同域document提供的是页面间的互操作,需要载入iframe页面
下面几个域名下的页面都是可以通过document.domain跨域互操作的: http://a.com/foo, http://b.a.com/bar, http://c.a.com/bar。 但只能以页面嵌套的方式来进行页面互操作,比如常见的iframe方式就可以完成页面嵌套
// URL http://a.com/foovar ifr = document.createElement('iframe');ifr.src = 'http://b.a.com/bar'; ifr.onload = function(){ var ifrdoc = ifr.contentDocument || ifr.contentWindow.document; ifrdoc.getElementsById("foo").innerHTML);};ifr.style.display = 'none';document.body.appendChild(ifr);
评论列表()