【问题标题】:iframe unable to access its parent window propertiesiframe 无法访问其父窗口属性
【发布时间】:2015-12-26 23:17:22
【问题描述】:

过去,如果 iframe 是 CORS,我可以从 iframe 访问父窗口中的属性和函数。例如:window.parent.api.func()。但是,它在最新版本的 Chrome 中停止工作。当我引用父窗口属性时,出现以下异常:

"Uncaught DOMException: Blocked a frame with origin "http://localhost:8090" from accessing a cross-origin frame.(…)" 

我了解从父窗口访问 iframe 我需要使用 postMessage。但是,如果从 iframe 访问父窗口应该没问题。为什么它停止工作?

【问题讨论】:

标签: javascript google-chrome iframe


【解决方案1】:

不同的端口算作不同的域。像您说的那样使用 postMessage 或确保端口也匹配。还要确保您没有将计算机的 IP 地址用于一台,将 localhost 用于另一台——它必须完全匹配。

【讨论】:

  • CORS 真的有问题吗?我相信它曾经有效。如果确实 CORS(在不同端口上)阻止访问父窗口,我可以尝试使用反向代理绕过它,但没有它会容易得多,尤其是在开发期间。
  • 您可以更改您机器上的主机文件并使它们都匹配。为localhost:8090 somenewname.com 和localhost:otherport somenewname.com 放置一个主机条目,然后在两个窗口中使用somenewname.com
  • 感谢您的建议。但我不认为主机文件可以有与之关联的端口。这只是一个 dns 名称转换。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-05
  • 2018-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多