二级域名的跨域应用

本文介绍了三种解决二级域名跨域的方法:设置document.domain实现跨域调用;通过页面跳转解决复杂跨域问题;重新评估需求避免不必要的跨域操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出版、作者信息和本声明。否则将追究法律责任。http://blog.youkuaiyun.com/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完全可以把需要垮域的应用变成本域的应用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值