【发布时间】:2018-05-10 11:26:42
【问题描述】:
我开发了一个搜索表单,它托管在我公司的本地服务器(iis、net core 网站)中。该网站是托管在另一台服务器(apache、wamp)中的 Wordpress,也在公司中。两者都有不同的公共 IP,但都托管在同一域的子域下。
比如说,wordpress.company.com 和 search.company.com,我可以控制两者。
我第一次使用 iframe 插件进行测试时,似乎一切正常,但我现在意识到,Edge 中显示了这个错误。所有浏览器都显示相同的行为,但没有显示类似的消息。
此内容无法在框架中显示
这里应该有一些内容,但发布者没有 允许它显示在一个框架中。这是为了帮助保护 您可能进入本网站的任何信息的安全性。
试试这个
在新窗口中打开它(这是 iframe 内容 url 的链接)
奇怪的是我只需要按 F5 就可以正确加载所有内容。
Chrome 控制台中的错误是:
拒绝在框架中显示“http://subdomain.mysite.com/”,因为 它将“X-Frame-Options”设置为“sameorigin”。
如何解决此问题?
【问题讨论】:
-
此错误通常发生的原因是因为在
.htaccess(或其他地方,取决于设置)中,安全方面仅设置为“self”,不允许任何人嵌入您的站点。这样做的目的是避免其他网站假装他们是您,并让用户陷入困境。例如:Header always set Content-Security-Policy: "default-src 'self'"。解决方案是将要嵌入它的域添加到白名单中。我不明白刷新如何解决它... -
您能解释一下如何添加域吗?我的意思是两者都在同一个域下,在不同的子域中,但是很快,该网站将移至主域,例如 www.company.com。我不太习惯这种流程
-
因此,如果现有设置为
Header always set Content-Security-Policy: "default-src 'self'; script-src 'self';"并且我添加了 google.com,则它变为Header always set Content-Security-Policy: "default-src 'self' *.google.com; script-src 'self';"(*是包含所有子域的通配符,但您可以键入特定的)。 CSP 标头的语法是:开引号、属性名称、白名单项目、冒号(根据需要重复)、闭引号。见:developer.mozilla.org/en-US/docs/Web/HTTP/CSP -
它似乎解决了部分问题。现在它立即加载而不刷新,但没有加载 css 样式。可能缺少什么?
-
简单! :) CSS 样式的权限:
style-src 'self' *mysite.com;-让我告诉你,一旦你使用 CSP,你还需要为 JS 设置权限(script-src)、图像(img-src)等等。请参阅developer.mozilla.org/en-US/docs/Web/HTTP/CSP - 这很痛苦,但这可以让您完全控制。一个不便(?)我记得有一种方法可以防止 CSS 或 JS 注入,但是你不能拥有任何内联 CSS 或 JS。它们根本不会被应用,并且控制台(在浏览器中)会告诉您“由于这条规则,这种风格已经停止”。它可以设置为...
标签: .net wordpress apache iframe iis-7