我有一个在外部服务器上托管的网站,我希望能够从我的本地开发环境(localhost)运行它(在iframe内)。不幸的是,当我试图用iframe加载页面时,我在框架内容中得到了“此内容无法在框架中显示”的消息。我该如何解决这个问题?使用iframe的本地网站是经典的asp,而托管在外部服务器上的网站是MVC4。我只在尝试iframe MVC4 Web应用程序时得到错误。当我尝试iframe一个经典的asp网站,它与MVC4应用程序位于同一个服务器(同一个域)上,我没有得到任何错误。
4szc88ey1#
根据Mozilla Developer Network,<frame>, <iframe> or <object>元素支持三个选项:
<frame>, <iframe> or <object>
第一个和最后一个绝对不是你需要的。我尝试使用本地服务器访问另一个本地服务器:X-Frame-Options: ALLOW-FROM http://localhost/个
X-Frame-Options: ALLOW-FROM http://localhost/
**我得到了一个答案:'allow-from http://localhost/' is not a recognized directive. The header will be ignored.个
'allow-from http://localhost/' is not a recognized directive. The header will be ignored.
它有点工作,因为标题被忽略了,但你必须评估这是否适合你的网站。在这种情况下,要求您的服务器不发送此头会更简单。但只有当你明白你的项目的后果时才能这样做。在IIS上,可以通过web.config完成:
web.config
<system.webServer> <httpProtocol> <customHeaders> <remove name="X-Frame-Options" /> </customHeaders> </httpProtocol> </system.webServer>
字符串
Apache参见this topic。
请记住,* 取决于您的Web浏览器是否荣誉标头 *。Mozilla甚至表示:只有当访问文档的用户使用支持X-Frame-Options的浏览器时,才能提供额外的安全性。我相信Edge在这方面比Webkit更严格。
b1payxdu2#
最终的修复是使用SuppressXFrameOptionsHeader来确保XFrameOptionsHeader设置不会被自动覆盖。
SuppressXFrameOptionsHeader
XFrameOptionsHeader
iih3973s3#
X-Frame-Options标头仅支持两个指令:否认或相同的起源。虽然DENY阻止了所有将网站嵌入iframe的尝试,但SAMEORIGIN只允许在同一个域上嵌入。这个限制使得它不适合允许嵌入到您自己的域以外的特定域。你需要的是Content-Security-Policy HTTP头,它有一个frame-ancestors指令,这就是你需要的。要使其工作,设置您的标题所需的域在node.js中:第一个月在Ruby on Rails中:response.headers["Content-Security-Policy"] = "frame-ancestors https://www.google.com/;"个有了CSP接头,您就可以开始了!
response.headers["Content-Security-Policy"] = "frame-ancestors https://www.google.com/;"
3条答案
按热度按时间4szc88ey1#
根据Mozilla Developer Network,
<frame>, <iframe> or <object>
元素支持三个选项:已编辑:根据Dorner的评论,以下选项不再支持,不应使用:
第一个和最后一个绝对不是你需要的。我尝试使用本地服务器访问另一个本地服务器:
X-Frame-Options: ALLOW-FROM http://localhost/
个**我得到了一个答案:
'allow-from http://localhost/' is not a recognized directive. The header will be ignored.
个它有点工作,因为标题被忽略了,但你必须评估这是否适合你的网站。在这种情况下,要求您的服务器不发送此头会更简单。但只有当你明白你的项目的后果时才能这样做。
在IIS上,可以通过
web.config
完成:字符串
Apache参见this topic。
请记住,* 取决于您的Web浏览器是否荣誉标头 *。Mozilla甚至表示:
只有当访问文档的用户使用支持X-Frame-Options的浏览器时,才能提供额外的安全性。
我相信Edge在这方面比Webkit更严格。
b1payxdu2#
最终的修复是使用
SuppressXFrameOptionsHeader
来确保XFrameOptionsHeader
设置不会被自动覆盖。iih3973s3#
X-Frame-Options标头仅支持两个指令:否认或相同的起源。虽然DENY阻止了所有将网站嵌入iframe的尝试,但SAMEORIGIN只允许在同一个域上嵌入。这个限制使得它不适合允许嵌入到您自己的域以外的特定域。
你需要的是Content-Security-Policy HTTP头,它有一个frame-ancestors指令,这就是你需要的。
要使其工作,设置您的标题所需的域
在node.js中:
第一个月
在Ruby on Rails中:
response.headers["Content-Security-Policy"] = "frame-ancestors https://www.google.com/;"
个有了CSP接头,您就可以开始了!