二级域名的跨域应用

版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出版、作者信息和本声明。否则将追究法律责任。http://blog.csdn.net/mayongzhan - 马永占,myz,mayongzhan

最近在解决几个二级域名的跨域应用

简单总结如下:

1
利用document.domain = "mayongzhan.com";
a.mayongzhan.com和b.mayongzhan.com需要跨域,则在a,b两个页面的JS部分中都定义一个document.domain。
这样代码就可以互调用了。不过需要注意,FF和OP的document.domain只能定义到更高级的domain,就是说a.mayongzhan.com定义两次domain的话,如果第一次定义为mayongzhan.com了,就不能在定义回a.mayongzhan。(更多经典内容请见http://fettig.net/weblog/2005/11/28/how-to-make-xmlhttprequest-connections-to-another-server-in-your-domain/
为什么需要定义两次domain呢?因为我这里的项目需要在一个页面调用两次域不用的跨域。

2
利用页面跳转
a.mayongzhan.com打开b.mayongzhan.com的页面,在b处理完成之后直接opener.xxx()调用不到,因为跨域了,所以要利用页面的跳转跳回a.mayongzhan.com中的页面,这个页面是一个中间页,只负责接b的数据,然后调用a的xxx(),这个页对于a.mayongzhan.com来说不算跨域。
因为遇到了跨两次域的问题,所以不得不考虑另外一种方式,就是页面跳转。这是一种极其恶心的使用方式,不仅用户体验差,访问资源多,并且传递参数容易出错。

3
判断 是否真的要跨域?
其实放在第三点不太合适,毕竟走了两条弯路后才去考虑是否有必要跨域是浪费了大量时间的,如果一开始就先仔细策划一下也许就不需要跨域了。
a.mayongzhan.com 打开 b.mayongzhan.com 页面,b页去调用a的JS,这就产生了跨域。a和b都是mayongzhan.com下的页面,如果网站规模不是太巨大,那么这些代码一定都会存在一起,那么通过本地的服务端include完全可以把需要垮域的应用变成本域的应用。

你可能感兴趣的:(.net,Blog,出版)