content-security-policy 不起作用我只想将我的网站加载到另一个网站上的 iFrame 中

Posted

技术标签:

【中文标题】content-security-policy 不起作用我只想将我的网站加载到另一个网站上的 iFrame 中【英文标题】:content-security-policy doesnt work I want to have my website load in an iFrame on ONE other website only 【发布时间】:2022-01-23 05:13:28 【问题描述】:

你是怎么做到的?我只希望另一个网站能够在 iFrame 中加载我的主网站,但没有任何效果。

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors

显然,据我了解,您在 .htaccess 中设置的协议是这样的

到目前为止我已经尝试过

1.

Header set Content-Security-Policy "frame-ancestors 'self' https://example.subdomain.co;"

2.

Header always set Content-Security-Policy "frame-ancestors 'self' 'https://example.subdomain.co';"

3.

Header set Content-Security-Policy "frame-ancestors 'self' 'https://example.subdomain.co';"

这些都不起作用。当我尝试在 https://example.subdomain.co 中加载 example.com 的 iframe 时,出现以下错误:

拒绝在框架中显示“https://example.com/”,因为它设置了 'X-Frame-Options' 到 'sameorigin'。

然后我变得更加困惑,因为显然你只能用这个做 DENYSAMEORIGIN

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options

X-Frame-Options HTTP 响应标头可用于指示 是否应允许浏览器在 a 中呈现页面

, , 要么 。网站可以使用它来避免 点击劫持攻击,通过确保其内容不被嵌入 进入其他网站。

仅当用户访问文档时才提供附加的安全性 正在使用支持 X-Frame-Options 的浏览器。

我想要的是ALLOW FROM 但是

ALLOW-FROM uri 这是一个过时的指令,不再适用于 现代浏览器。不要使用它。在支持旧版浏览器时,页面 只能在指定的原始 uri 上显示在框架中。笔记 在旧版 Firefox 实现中,这仍然受到 与 SAMEORIGIN 相同的问题 - 它不检查框架祖先 看看它们是否在同一个来源。内容安全策略 HTTP 标头有一个 frame-ancestors 指令,您可以使用它来代替。

它已被弃用并且不起作用。

Refused to display in a frame because it set 'X-Frame-Options' to 'SAMEORIGIN'

回答没有帮助,因为他们不谈论我想做什么,他们只是解释它是什么

How to set 'X-Frame-Options' on iframe?

同样,没有帮助,因为它向 OP 解释标头是在 iframe 源中的网站上设置的

有没有办法以某种方式为框架祖先设置 X-Frame-Options 以使其工作,以便我可以在另一个特定网站上加载我网站的 iframe?或者这不可能?

【问题讨论】:

因此,您的服务器 also 使用过时的 X-FRAME-OPTIONS 标头响应这一事实阻碍了您为此定义适当 CSP 的尝试 - 所以请尝试 删除后者(Header unset 【参考方案1】:

当您正确设置 frame-ancestors 时,所有理解它的浏览器都会忽略 X-Frame-Options。这意味着您可以设置两个标头并使用 ALLOW-FROM,因为您随后会将 X-Frame-Options 提供给 IE,并将 frame-ancestors 提供给其他浏览器。

您是否检查过您的 Content-Security-Policy 是否作为响应标头存在?您的第一个版本是最正确的版本,但您可以删除该方案:“frame-ancestors 'self' example.subdomain.co;”,源中的主机不应有任何单引号。

【讨论】:

以上是关于content-security-policy 不起作用我只想将我的网站加载到另一个网站上的 iFrame 中的主要内容,如果未能解决你的问题,请参考以下文章

Web 安全之内容安全策略(Content-Security-Policy,CSP)详解

为啥“首选”通过标头传递 Content-Security-Policy?

可以将 Tomcat 7 配置为插入“Content-Security-Policy”HTTP 标头吗?

Content-Security-Policy

在 nginx 中添加 Content-Security-Policy 后 websocket 连接失败

如何让 Google Tag Manager 和 Content-Security-Policy 共存?