如何解决iframe未加载提供的网址
我有一个部署在IIS服务器中并从 http://x.x.x.x/app 运行的asp.net MVC5应用程序。我有一个名为Geocatalog的视图,其中包含一个iframe,我要在其中嵌入在同一服务器( http://x.x.x.x:PORT/geonetwork )中运行的Geonetwork(部署在tomcat9中),但是在导航器中执行时此错误:
Refused to frame 'http://x.x.x.x:PORT/' because an ancestor violates the following Content Security Policy directive: "frame-ancestors 'none'".
我不知道为什么会这样?我对另一个网址执行了完全相同的操作,效果很好。
更新:
<add name="Content-Security-Policy" value="frame-ancestors http://subdomain.domain.com" />
仍然没有发现变化
您的帮助将不胜感激。
解决方法
-
CSP spec不允许将IP地址用作主机源,仅127.0.0.1除外。 因此,您需要在
<iframe src='x.x.x.x'
和 frame-ancestors 中也使用域名而不是IP。 -
如果使用类似http://example.com的方案指定主机名,则意味着仅允许使用默认端口80(对于https:则为443)。 如果使用非标准端口号,则应准确指定它:
frame-ancestors http://subdomain.domain.com:12345
或frame-ancestors subdomain.domain.com:12345
。最后一个将允许使用与父页面加载相同的方案进行iframing,并避免块混合内容。但是在这种情况下,您应该使用多方案URI:<iframe src='//subdomain.domain.com:12345'
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。