blob: 23dd67cca291426ae34a5bfef6e1ac50ba25fd1e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
---
title: 'CSP: frame-ancestors'
slug: Web/HTTP/Headers/Content-Security-Policy/frame-ancestors
translation_of: Web/HTTP/Headers/Content-Security-Policy/frame-ancestors
---
<div>{{HTTPSidebar}}</div>
<p>HTTP头部 {{HTTPHeader("Content-Security-Policy")}} (CSP) <code>中的<strong>frame-ancestors</strong></code> 指令指定了一个可以包含{{HTMLElement("frame")}},{{HTMLElement("iframe")}},{{HTMLElement("object")}},{{HTMLElement("embed")}},or {{HTMLElement("applet")}}等元素的有效父级。</p>
<p>当该指令设置为<code>'none'时,其作用类似于</code>{{HTTPHeader("X-Frame-Options")}}<code>: DENY</code> (该头部被一些老版本浏览器所支持)。</p>
<table class="properties">
<tbody>
<tr>
<th scope="row">CSP版本(CSP version)</th>
<td>2</td>
</tr>
<tr>
<th scope="row">指令类型(Directive type)</th>
<td>{{Glossary("Navigation directive")}}</td>
</tr>
<tr>
<th scope="row">是否后备使用{{CSP("default-src")}}</th>
<td>否。如未设置则允许所有可能值。</td>
</tr>
<tr>
<th colspan="2" scope="row">该指令不支持通过{{HTMLElement("meta")}} 元素或通过 {{HTTPHeader("Content-Security-policy-Report-Only")}} 头域所指定.</th>
</tr>
</tbody>
</table>
<h2 id="Syntax">Syntax</h2>
<p><code>frame-ancestors</code>策略可以设置一个或多个源<source>:</p>
<pre class="syntaxbox">Content-Security-Policy: frame-ancestors <source>;
Content-Security-Policy: frame-ancestors <source> <source>;
</pre>
<h3 id="Sources">Sources</h3>
<p><source> 可以是如下内容:</p>
<div class="note">
<p><code>frame-ancestors</code>指令的语法类似于其他指令的源列表(source list,如{{CSP("default-src")}}),但不允许<code>'unsafe-eval'或</code><code>'unsafe-inline'</code> 。它也不会回退使用<code>default-src</code>的值。仅有如下的源列表是可用的:</p>
</div>
<dl>
<dt><host-source></dt>
<dd>一个Internet主机的名称或IP地址,以及一个可选的<a href="/en-US/docs/URIs_and_URLs">URL scheme</a>和/或端口号。这些站点的地址可以包含一个可选的引导通配符(星号, <code>'*'),或者你可以使用通配符</code>(同样还是, <code>'*')作为端口地址</code>,以示这个源的所有合法端口地址都是有效的。<br>
例子:
<ul>
<li><code>http://*.example.com</code>: 匹配所有使用http:URL scheme并来对于example.com及其子域名的加载意图。</li>
<li><code>mail.example.com:443</code>: 匹配所有对于mail.example.com在443端口的访问意图。</li>
<li><code>https://store.example.com</code>: 匹配所有使用https:访问store.example.com的意图。</li>
</ul>
</dd>
<dt><scheme-source></dt>
<dd>一个schema配置,比如'http:'或'https:'。注意,冒号是必要的。你同样也可以指定一个data schema(但并不推荐)。
<ul>
<li>'<code>data:</code>' 允许 <a href="/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs"><code>data:</code> URIs</a> 作为内容源。<em> 这是不安全的,攻击者可以用此来注入恶意代码。请谨慎使用,并不要令其作用于脚本。</em></li>
<li><code>'mediastream:'</code> 允许 <a href="/en-US/docs/Web/API/MediaStream_API"><code>mediastream:</code> URIs</a> 作为内容源.</li>
<li><code>'blob:'</code> 允许 <a href="/en-US/docs/Web/API/Blob"><code>blob:</code> URIs</a> 作为内容源.</li>
<li><code>'filesystem:'</code> 允许 <a href="/en-US/docs/Web/API/FileSystem"><code>filesystem:</code> URIs</a> 作为内容源.</li>
</ul>
</dd>
<dt><code>'self'</code></dt>
<dd>指向一个该受保护文档所在的源,包含同样的URL schema和端口号。必须用单引号设置。有些浏览器会从源指令中排<code>除blob</code>和<code>filesystem</code>。需要允许这些内容类型的站点可以通过Data属性指定它们。</dd>
<dt><code>'none'</code></dt>
<dd>指向一个空集,意味着没有URL会被匹配。也需要单引号包裹设置。</dd>
</dl>
<h2 id="Examples">Examples</h2>
<pre class="brush: bash">Content-Security-Policy: frame-ancestors 'none';</pre>
<h2 id="Specifications">Specifications</h2>
<table class="standard-table">
<tbody>
<tr>
<th scope="col">Specification</th>
<th scope="col">Status</th>
<th scope="col">Comment</th>
</tr>
<tr>
<td>{{specName("CSP 3.0", "#directive-frame-ancestors", "frame-ancestors")}}</td>
<td>{{Spec2('CSP 3.0')}}</td>
<td>No changes.</td>
</tr>
<tr>
<td>{{specName("CSP 1.1", "#directive-frame-ancestors", "frame-ancestors")}}</td>
<td>{{Spec2('CSP 1.1')}}</td>
<td>Initial definition.</td>
</tr>
</tbody>
</table>
<h2 id="Browser_compatibility">Browser compatibility</h2>
<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
<p>{{Compat("http.headers.csp.frame-ancestors")}}</p>
<h2 id="See_also">See also</h2>
<ul>
<li>{{HTTPHeader("Content-Security-Policy")}}</li>
<li>{{HTTPHeader("X-Frame-Options")}}</li>
</ul>
|