常用跨域方法实践(二)
这篇讲的是作者在《常用跨域方法实践》系列的第二篇中,深入介绍了document.domain、URL.hash、cross-fragment、window.name和postMessage这五种经典但相对“非主流”的跨域通信方案的具体实现。与依赖CORS或JSONP的常见方案不同,这些方法往往利用了浏览器的一些底层特性或历史遗留机制,解决特定场景下的问题。 例如,document.domain适用于具有相同父域名的子站点(如www和sample.myapp.com),通过修改这个属性即可实现内部应用的直接通信。URL.hash和其升级版cross-fragment,则利用了hash变化不触发页面刷新的特性,通过监听和修改iframe的hash值,甚至借助代理页面,实现了双向消息传递。作者为每种方式都提供了可运行的测试页面代码和效果演示,清晰地展示了从消息发送、监听到响应的完整流程。 文章不仅展示了如何“做”,也隐含了这些方案的适用边界与取舍:document.domain限于同父域;基于hash的方案虽然巧妙,但可能与其他业务逻辑中的hash使用产生冲突。对于理解浏览器安全模型的历史脉络,以及在特定约束下(如需兼容老旧环境或处理同父域子站通信)如何灵活选择技术方案,这些实践案例提供了非常扎实的参考。