究竟什么可以一个IFrame做的top.Location对象(跨域)?(What exactly c

2019-07-30 01:15发布

有一个很特别的优势情况下,跨域策略有关window.top.Location对象...

比方说,我有iframe中,域www.bbb.com,一个页面里面居住在域www.aaa.com。

IFrame的内页可以:

  • 比较window.top.location到了window.location(检测无论是被陷害)
  • 呼叫window.top.location.replace(window.location的)重定向到自
  • 呼叫window.top.location.replace(“任意字符串”),到别的地方重定向

但它不能:

  • 警报,文件撰写,或做任何window.top.location.href的输出
  • 它串接在任何其他变量,或以任何有用的方式来使用它
  • 呼叫window.top.location.reload()

这些只是那些我能很快找到。 我敢肯定还有其他的边缘情况。
这似乎是浏览器不允许使用top.location对象如果顶部是另一个域中, 少数白名单的东西...

这是记录任何地方?
我能找到什么,这些白名单的东西?
这是在HTML标准,并在所有的浏览器同样执行? 或者,这是半随机的执行?

Answer 1:

安全规则确实与浏览器的版本不同。 通常是较新的版本有更严格的规则,但也更微调。

我怀疑是旧的浏览器会自由地让你进入顶部框架的位置对象,新一点的浏览器将完全否定它,而目前的版本让您比较对象的位置而不是从他们阅读。

你可能会这个能够找到文档,但它会针对每个浏览器和特定的浏览器的各个版本。 据我所知,目前对此并没有真正的标准。 每个浏览器供应商试图保护用户尽可能,同时仍保持一些可用性的网站建设者。 一般来说,你真的不能假设任何靠近边界在所有浏览器的工作原理,或者说,它会继续在未来的版本中工作。



Answer 2:

这正是由指定的HTML5标准的部分5.5.3.1 。



文章来源: What exactly can an IFrame do with the top.Location object (cross-domain)?