window.name跨域mark

看到篇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为空文件

猜你喜欢

转载自luqingxuan.iteye.com/blog/2326311