aboutsummaryrefslogtreecommitdiff
path: root/files/zh-cn/web/http/headers/content-security-policy/frame-ancestors/index.html
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>策略可以设置一个或多个源&lt;source&gt;</p>

<pre class="syntaxbox">Content-Security-Policy: frame-ancestors &lt;source&gt;;
Content-Security-Policy: frame-ancestors &lt;source&gt; &lt;source&gt;;
</pre>

<h3 id="Sources">Sources</h3>

<p>&lt;source&gt; 可以是如下内容:</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>&lt;host-source&gt;</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>&lt;scheme-source&gt;</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>