aboutsummaryrefslogtreecommitdiff
path: root/files/ja/web/http/headers/referrer-policy/index.html
blob: 9417181696ac93a65c4106d7fa6b4f4b71514432 (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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
---
title: Referrer-Policy
slug: Web/HTTP/Headers/Referrer-Policy
tags:
  - HTTP
  - HTTP ヘッダー
  - Reference
  - Referrer-Policy
  - Response
  - referrer
  - プライバシー
  - レスポンスヘッダー
translation_of: Web/HTTP/Headers/Referrer-Policy
---
<div>{{HTTPSidebar}}</div>

<p><span class="seoSummary">HTTP の <strong><code>Referrer-Policy</code></strong> {{glossary("HTTP header", "ヘッダー")}}は、 ({{HTTPHeader("Referer")}} ヘッダーで送られる) <a href="/ja/docs/Web/Security/Referer_header:_privacy_and_security_concerns">リファラー情報</a>をリクエストにどれだけ含めるかを制御します。ヘッダーに加えて、<a href="#integration_with_html">HTMLでもこのポリシーを設定する</a>ことができます。</span></p>

<table class="properties">
 <tbody>
  <tr>
   <th scope="row">ヘッダー種別</th>
   <td>{{Glossary("Response header", "レスポンスヘッダー")}}</td>
  </tr>
  <tr>
   <th scope="row">{{Glossary("Forbidden header name", "禁止ヘッダー名")}}</th>
   <td>いいえ</td>
  </tr>
 </tbody>
</table>

<h2 id="Syntax" name="Syntax">構文</h2>

<pre class="syntaxbox notranslate">Referrer-Policy: no-referrer
Referrer-Policy: no-referrer-when-downgrade
Referrer-Policy: origin
Referrer-Policy: origin-when-cross-origin
Referrer-Policy: same-origin
Referrer-Policy: strict-origin
Referrer-Policy: strict-origin-when-cross-origin
Referrer-Policy: unsafe-url
</pre>

<div class="blockIndicator note">
<p>元のヘッダー名である {{HTTPHeader("Referer")}} は "referrer" という語のスペルミスです。 <code>Referrer-Policy</code> ヘッダーはこのスペルミスをしていません。</p>
</div>

<h2 id="Directives" name="Directives">ディレクティブ</h2>

<dl>
 <dt><code>no-referrer</code></dt>
 <dd>{{HTTPHeader("Referer")}} ヘッダーが省略されます。送信されるリクエストにはリファラー情報が含まれません。</dd>
 <dt><code>no-referrer-when-downgrade</code></dt>
 <dd>プロトコルのセキュリティ水準が同一である、または向上する場合 (HTTP→HTTP, HTTP→HTTPS, HTTPS→HTTPS) は、{{glossary("origin", "オリジン")}}、パス、クエリ文字列が {{HTTPHeader("Referer")}} ヘッダーで送信されます。セキュリティ水準が低下するリクエスト (HTTPS→HTTP, HTTPS→file) では {{HTTPHeader("Referer")}} ヘッダーが送信されません。
 </dd>
 <dt><code>origin</code></dt>
 <dd>{{glossary("origin", "オリジン")}}のみが {{HTTPHeader("Referer")}} ヘッダーで送信されます。<br>
 たとえば、 <code>https://example.com/page.html</code> にある文書からは、 <code>https://example.com/</code> というリファラーが送信されます。</dd>
 <dt><code>origin-when-cross-origin</code></dt>
 <dd>同一のプロトコル水準 (HTTP→HTTP, HTTPS→HTTPS) で{{glossary("Same-origin_policy", "同一オリジン")}}のリクエストを行う場合は{{glossary("origin", "オリジン")}}、パス、クエリ文字列を送信します。オリジン間リクエストや安全性の低下する移動先 (HTTPS→HTTP) ではオリジンのみを送信します。</dd>
 <dt><code>same-origin</code></dt>
 <dd>{{glossary("Same-origin_policy", "同一オリジン")}}のリクエストでは{{glossary("origin", "オリジン")}}、パス、クエリ文字列を送信します。オリジン間リクエストでは {{HTTPHeader("Referer")}} ヘッダーを送信しません。</dd>
 <dt><code>strict-origin</code></dt>
 <dd>プロトコルのセキュリティ水準が同じである場合 (HTTPS→HTTPS) にのみオリジンを送信します。安全性の低下する移動先 (HTTPS→HTTP) には {{HTTPHeader("Referer")}} ヘッダーを送信しません。</dd>
 <dt><code>strict-origin-when-cross-origin</code> (既定値)</dt>
 <dd>同一オリジンのリクエストを行う際はオリジン、パス、クエリ文字列を送信します。オリジン間リクエストでは、プロトコルのセキュリティ水準が同じである場合 (HTTPS→HTTPS) にのみオリジンを送信します。安全性の低下する移動先 (HTTPS→HTTP) には {{HTTPHeader("Referer")}} ヘッダーを送信しません。</dd>
 <div class="note">これはポリシーが指定されていない場合や、与えられた値が無効であった場合の既定のポリシーです (仕様書改訂 <a href="https://github.com/whatwg/fetch/pull/1066">[November 2020]</a> を参照) 。以前の規定値は <code>no-referrer-when-downgrade</code> でした。</div>
 <dt>unsafe-url</dt>
 <dd>セキュリティに関係なく、どのリクエストを行った場合でも、オリジン、パス、クエリ文字列を送信します。
 <div class="blockIndicator warning">
 <p>このポリシーは、 HTTPS リソースの URL から安全ではないオリジンへプライベートである可能性がある情報を漏洩します。設定する場合は影響をよく検討してください。</p>
 </div>
 </dd>
</dl>

<h2 id="Integration_with_HTML" name="Integration_with_HTML">HTML との統合</h2>

<p>HTML 内でリファラーポリシーを設定することもできます。例えば、 {{HTMLElement("meta")}} 要素で <a href="/ja/docs/Web/HTML/Element/meta#attr-name">name</a><code>referrer</code> を設定することで、文書全体のリファラーポリシーを設定することができます。</p>

<pre class="brush: html notranslate">&lt;meta name="referrer" content="origin"&gt;</pre>

<p>{{HTMLElement("a")}}, {{HTMLElement("area")}}, {{HTMLElement("img")}}, {{HTMLElement("iframe")}}, {{HTMLElement("script")}}, {{HTMLElement("link")}} の各要素に <code>referrerpolicy</code> 属性を指定し、個別のリクエストにリファラーポリシーを設定することもできます。</p>

<pre class="brush: html notranslate">&lt;a href="http://example.com" referrerpolicy="origin"&gt;</pre>

<p>他に、 <code>noreferrer</code> <a href="/ja/docs/Web/HTML/Link_types">link 関係</a><code>a</code>, <code>area</code>, <code>link</code> の各要素に設定することもできます。</p>

 <div class="blockIndicator warning">
 <p>As seen above, the `noreferrer` link relation is written without a dash. When you specify the referrer policy for the entire document with a {{HTMLElement("meta")}} element, it should be written _with_ a dash: `<meta name="referrer" content="no-referrer">`.</p>
 </div>

<pre class="brush: html notranslate">&lt;a href="http://example.com" rel="noreferrer"&gt;</pre>

<h2 id="Integration_with_CSS" name="Integration_with_CSS">CSS との統合</h2>

<p>CSS はスタイルシートから参照されるリソースにアクセスすることがあります。これらのリソースは同様にリファラーポリシーに従います。</p>

<ul>
 <li>外部の CSS スタイルシートでは、そのレスポンスの <code>Referrer-Policy</code> ヘッダーにより上書きされない限り、既定のポリシー (<code>strict-origin-when-cross-origin</code>) が使用されます。</li>
 <li>{{HTMLElement("style")}} 要素または <a href="/ja/docs/Web/API/HTMLElement/style"><code>style</code> 属性</a>については、所有者の文書のリファラーポリシーが使用されます。</li>
</ul>

<h2 id="Examples" name="Examples"></h2>

<table class="standard-table">
 <thead>
  <tr>
   <th scope="col">ポリシー</th>
   <th scope="col">文書</th>
   <th scope="col">移動先</th>
   <th scope="col">リファラー</th>
  </tr>
 </thead>
 <tbody>
  <tr>
   <th><code>no-referrer</code></th>
   <td>https://example.com/page</td>
   <td><em>どこへでも</em></td>
   <td><em>(リファラーなし)</em></td>
  </tr>
  <tr>
   <th rowspan="3"><code>no-referrer-when-downgrade</code></th>
   <td rowspan="3">https://example.com/page</td>
   <td>https://example.com/otherpage</td>
   <td>https://example.com/page</td>
  </tr>
  <tr>
   <td>https://mozilla.org</td>
   <td>https://example.com/page</td>
  </tr>
  <tr>
   <td><strong>http</strong>://example.org</td>
   <td><em>(リファラーなし)</em></td>
  </tr>
  <tr>
   <th><code>origin</code></th>
   <td>https://example.com/page</td>
   <td><em>どこへでも</em></td>
   <td>https://example.com/</td>
  </tr>
  <tr>
   <th rowspan="3"><code>origin-when-cross-origin</code></th>
   <td rowspan="3">https://example.com/page</td>
   <td>https://example.com/otherpage</td>
   <td>https://example.com/page</td>
  </tr>
  <tr>
   <td>https://mozilla.org</td>
   <td>https://example.com/</td>
  </tr>
  <tr>
   <td><strong>http</strong>://example.com/page</td>
   <td>https://example.com/</td>
  </tr>
  <tr>
   <th rowspan="2"><code>same-origin</code></th>
   <td rowspan="2">https://example.com/page</td>
   <td>https://example.com/otherpage</td>
   <td>https://example.com/page</td>
  </tr>
  <tr>
   <td>https://mozilla.org</td>
   <td><em>(リファラーなし)</em></td>
  </tr>
  <tr>
   <th rowspan="3"><code>strict-origin</code></th>
   <td rowspan="2">https://example.com/page</td>
   <td>https://mozilla.org</td>
   <td>https://example.com/</td>
  </tr>
  <tr>
   <td><strong>http</strong>://example.org</td>
   <td><em>(リファラーなし)</em></td>
  </tr>
  <tr>
   <td><strong>http</strong>://example.com/page</td>
   <td><em>どこへでも</em></td>
   <td>http://example.com/</td>
  </tr>
  <tr>
   <th rowspan="3"><code>strict-origin-when-cross-origin</code></th>
   <td rowspan="3">https://example.com/page</td>
   <td>https://example.com/otherpage</td>
   <td>https://example.com/page</td>
  </tr>
  <tr>
   <td>https://mozilla.org</td>
   <td>https://example.com/</td>
  </tr>
  <tr>
   <td><strong>http</strong>://example.org</td>
   <td><em>(リファラーなし)</em></td>
  </tr>
  <tr>
   <th><code>unsafe-url</code></th>
   <td>https://example.com/page?q=123</td>
   <td><em>どこへでも</em></td>
   <td>https://example.com/page?q=123</td>
  </tr>
 </tbody>
</table>

<h3 id="Specifying_a_fallback_policy" name="Specifying_a_fallback_policy">代替ポリシーの指定</h3>

<p>必要なポリシーのブラウザーの対応状況が十分ではなく、代替ポリシーを設定したい場合は、カンマ区切りのリストを使用し、必要なポリシーを最後に指定してください。</p>

<pre class="notranslate">Referrer-Policy: no-referrer, strict-origin-when-cross-origin</pre>

<p>上記のシナリオでは、 <code>no-referrer</code> はブラウザーが <code>strict-origin-when-cross-origin</code> に対応していない場合のみ使用されます。</p>

<p class="note">複数の値を設定する方法は、 HTTP の <code>Referrer-Policy</code> ヘッダーのみが対応しており、 <code>referrerpolicy</code> 属性では対応していません。</p>

<h2 id="browser-specific_preferencessettings"><a href="#browser-specific_preferencessettings" title="Permalink to Browser-specific preferences/settings">Browser-specific preferences/settings</a></h2>

<h3 id="firefox_preferences"><a href="#firefox_preferences" title="Permalink to Firefox preferences">Firefox preferences</a></h3>

<div><p>You can configure the <em>default</em> referrer policy in Firefox preferences. The preference names are version specific:</p>
<ul>
  <li>Firefox version 59 and later: <code>network.http.referer.defaultPolicy</code> (and <code>network.http.referer.defaultPolicy.pbmode</code> for private networks)</li>
  <li>Firefox versions 53 to 58: <code>network.http.referer.userControlPolicy</code></li>
</ul>
<p>All of these settings take the same set of values: <code>0 = no-referrer</code>, <code>1 = same-origin</code>, <code>2 = strict-origin-when-cross-origin</code>, <code>3 = no-referrer-when-downgrade</code>.</p></div>

<h2 id="Specifications" name="Specifications">仕様書</h2>

<table class="standard-table">
 <thead>
  <tr>
   <th scope="col">仕様書</th>
   <th scope="col">状態</th>
  </tr>
 </thead>
 <tbody>
  <tr>
   <td><a href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-header">Referrer Policy </a></td>
   <td>編集者草稿</td>
  </tr>
 </tbody>
</table>

<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>

<p>{{Compat("http.headers.Referrer-Policy")}}</p>

<div class="note">
<ul>
 <li>バージョン 53 以降では、 Gecko は <code>about:config</code> の中でユーザーが <code>Referrer-Policy</code> の既定値を設定できる設定項目 (<span class="quote"> <code>network.http.referer.userControlPolicy</code>) があります。</span></li>
 <li>バージョン 59 以降では (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=587523">#587523</a> を参照)、これは <code>network.http.referer.defaultPolicy</code> および <code>network.http.referer.defaultPolicy.pbmode</code> で置き換えられました。</li>
</ul>

<p>指定可能な値は以下の通りです。</p>

<ul>
 <li>0 — <code>no-referrer</code></li>
 <li>1 — <code>same-origin</code></li>
 <li>2 — <code>strict-origin-when-cross-origin</code></li>
 <li>3 — <code>no-referrer-when-downgrade</code> (既定値)</li>
</ul>
</div>

<h2 id="See_also" name="See_also">関連情報</h2>

<ul>
 <li>{{interwiki("wikipedia", "HTTPリファラ", "Wikipedia の HTTP リファラ")}}</li>
 <li><a href="/ja/docs/Web/API/Fetch_API">Fetch</a> の使用時: {{domxref("Request.referrerPolicy")}}</li>
 <li>廃止された <span style="white-space: nowrap;">{{HTTPHeader("Content-Security-Policy")}}</span> {{HTTPHeader("Content-Security-Policy/referrer", "referrer")}} {{Obsolete_Inline}} ディレクティブ</li>
 <li><a href="/ja/docs/Web/Security/Same-origin_policy">同一オリジンポリシー</a></li>
 <li>
  <p><a href="https://blog.mozilla.org/security/2015/01/21/meta-referrer/">Tighter Control Over Your Referrers – Mozilla Security Blog</a></p>
 </li>
</ul>