Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript iframe无法访问其父窗口属性_Javascript_Google Chrome_Iframe - Fatal编程技术网

Javascript iframe无法访问其父窗口属性

Javascript iframe无法访问其父窗口属性,javascript,google-chrome,iframe,Javascript,Google Chrome,Iframe,过去,如果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需要使用post

过去,如果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访问父窗口,应该没有问题。为什么它停止工作?

不同的端口视为不同的域。要么像你说的那样使用postMessage,要么确保端口匹配。还要确保您的计算机的IP地址不是一个,本地主机不是另一个——它必须完全匹配。

CORS真的是问题所在吗?我相信它曾经是有效的。如果CORS(在不同的端口上)确实阻止访问父窗口,我可以尝试使用反向代理绕过它,但是如果没有它,尤其是在开发期间,这会容易得多。您可以更改计算机上的主机文件并使它们匹配。为
localhost:8090 somenewname.com
localhost:otherport somenewname.com
添加主机条目,然后对这两个窗口使用
somenewname.com
。谢谢您的建议。但我不认为hosts文件可以有与其关联的端口。这只是一个dns名称转换。发现了一个相关的讨论:现在我相信我过去所做的是使用反向代理来避免CORS问题。这应该行得通。