Content-Security-Policy
忽略X-Frame-Options
,由服务器返回,或X-Frame-Options
仍然是主要的?
假设我有:
X-Frame-Options: DENY
Content-Security-Policy: frame-src a.com
浏览器会加载此框架吗?
目前尚不清楚。
一方面,http://a.com明确否认框架
另一方面,http://b.com明确允许http://a.com的框架。
答案 0 :(得分:29)
frame-src
CSP directive(已弃用并替换为child-src
)确定可在页面框架中使用哪些来源。
另一方面,X-Frame-Options
响应标头确定其他网页可以在iframe中使用该网页。
在您的情况下,http://a.com
X-Frame-Options: DENY
表示没有其他页面可以在框架中使用它。 {C}在其CSP中的含义无关紧要 - 任何网页都不能在框架中使用http://b.com
。
http://a.com
与CSP相交的地方是frame-ancestors
directive。来自CSP specificiation(强调我的):
该指令类似于几个
X-Frame-Options
标题 用户代理已实现。X-Frame-Options
源表达式是 大致相当于标题的'none'
,DENY
到'self'
, 等等。主要区别在于许多用户代理实现SAMEORIGIN
使其仅与顶级匹配 文件的位置。该指令检查每个祖先。如果有的话 祖先不匹配,负载被取消。 [RFC7034]
SAMEORIGIN
指令废弃了frame-ancestors
标头。如果资源同时包含两个策略,则应该强制执行X-Frame-Options
策略,并且应该忽略frame-ancestors
策略。
older question表示当时这在Firefox中不起作用,但希望现在情况发生了变化。
内容安全政策:指令'child-src'已被弃用。请使用指令'worker-src'来控制worker,或使用指令'frame-src'来控制帧。
看起来X-Frame-Options
现已弃用,child-src
又回来了。
答案 1 :(得分:5)
你的假设都没有普遍存在。
X-Frame-Options
。frame-ancestors
。frame-ancestors
指令,但如果指定了两者,则优先 X-Frame-Options
。答案 2 :(得分:1)
答案是通过实践测试找到的 我创建了两个网站并重现了描述的情况。
似乎X-Frame-Options是主要的
如果目标服务器拒绝框架,则客户端网站无法在iframe
Content-Security-Policy
中设置private void DateTimePicker1_ValueChanged(object sender, EventArgs e)
{
if (dateTimePicker1.Value == DateTimePicker.MinimumDateTime)
{
dateTimePicker1.Value = DateTime.Now; // This is required in order to show current month/year when user reopens the date popup.
dateTimePicker1.Format = DateTimePickerFormat.Custom;
dateTimePicker1.CustomFormat = " ";
}
else
{
dateTimePicker1.Format = DateTimePickerFormat.Short;
}
}
private void Clear_Click(object sender, EventArgs e)
{
dateTimePicker1.Value = DateTimePicker.MinimumDateTime;
}
的任何值。
但是,我没有在文档中找到任何确认。
在Chrome 54和IE 11上测试。