看到篇window.name讲解跨域的,挺清晰,mark
http://www.codesec.net/view/169705.html
其流程很简单:
1.a.html,proxy.html同源,在a.html中动态创建iframe
2.iframe设置src到目标路径b,同时监听load事件
3.b响应有可能只有一句:<script>window.name='???';</script>,主要是设置name值
4.接下来在load事件callback中,设置frame.contentWindow.location=proxy.html
5.那么在proxy.html页面加载完成后,就可以通过iframe.contentWindow.name获取name值了
6.顺便remove iframe吧
其原理:
1.iframe虽然切换了不同的src,但是window.name属性在请求路径b的时候通过js设置了,虽然切换到proxy.html,但是proxy.html没有通过js更改window.name,那么window.name不会因为加载不同的src而有所变化
2.只有同源策略才可以访问到iframe的contentWindow,所以必须有proxy.html,即使proxy.html为空文件