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
|
---
title: Zasada Polecającego (Referrer-Policy)
slug: Web/HTTP/Headers/Referrer-Policy
tags:
- HTTP
- Reference
- Referencja
- Referrer-Policy
- Response
- Response Header
- nagłówek HTTP
- nagłówek odpowiedzi
- odpowiedź
- polecający
- prywatność
- referrer
- zasada polecającego
translation_of: Web/HTTP/Headers/Referrer-Policy
---
<div>{{HTTPSidebar}}</div>
<p><span class="seoSummary">{{glossary("HTTP header")}} <strong><code>Referrer-Policy</code></strong> kontroluje, w jakim zakresie <a href="/en-US/docs/Web/Security/Referer_header:_privacy_and_security_concerns">informacje dot. polecającego (referrera)</a> (wysyłane poprzez nagłówek {{HTTPHeader("Referer")}}) powinny być zawarte w żądaniu</span></p>
<table class="properties">
<tbody>
<tr>
<th scope="row">Typ nagłówka</th>
<td>{{Glossary("Response header")}}</td>
</tr>
<tr>
<th scope="row">{{Glossary("Forbidden header name")}}</th>
<td>nie</td>
</tr>
</tbody>
</table>
<h2 id="Składnia">Składnia</h2>
<div class="blockIndicator note">
<p>Originalna nazwa nagłówka, {{HTTPHeader("Referer")}}, to błędnie zapisane słowo "referrer" ("polecający"). Nagłówek <code>Referrer-Policy</code> nie zawiera tej literówki.</p>
</div>
<pre class="syntaxbox">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>
<h2 id="Dyrektywy">Dyrektywy</h2>
<dl>
<dt><code>no-referrer</code></dt>
<dd>Nagłówek {{HTTPHeader("Referer")}} zostanie całkowicie pominięty. Żadna informacja dot. polecającego nie zostanie wysłana w żądaniu.</dd>
<dt><code>no-referrer-when-downgrade</code> (domyślna)</dt>
<dd>Zachowanie domyślne, jeśli zasada nie została określona lub jeśli wartość jest niepoprawna. {{glossary("origin")}}, {{glossary("path")}} oraz {{glossary("querystring")}} URLu są wysyłane jako polecający, podczas gdy poziom bezpieczeństwa protokołu pozostaje na tym samym poziomie (HTTP→HTTP, HTTPS→HTTPS) lub jest bezpieczniejszy (HTTP→HTTPS), ale nie gdy destynacja jest mniej bezpieczna (HTTPS→HTTP).</dd>
<dt><code>origin</code></dt>
<dd>Wysyła jedynie {{glossary("origin")}} dokumentu jako jego polecającego. Przykładowo, dokument pod adresem <code>https://example.com/page.html</code> wyśle referrer brzmiący: <code>https://example.com/</code>.</dd>
<dt><code>origin-when-cross-origin</code></dt>
<dd>Wyśle origin, ścieżkę i string z zapytaniem podczas obsługi żądania {{glossary("Same-origin_policy", "same-origin")}}, w innych przypadkach wyśle jedynie origin dokumentu.</dd>
<dt><code>same-origin</code></dt>
<dd>Referrer zostanie wysłany do <a href="/en-US/docs/Web/Security/Same-origin_policy">originów same-site</a>, natomiast żądania cross-origin nie będą zawierać informacji o referrerze.</dd>
<dt><code>strict-origin</code></dt>
<dd>Wyśle origin dokumentu jako referrer, jeśli poziom bezpieczeństwa protokołu zostaje na tym samym poziomie (HTTPS→HTTPS), nie wyśle, jeśli poziom bezpieczeństwa destynacji jest niższy (HTTPS→HTTP).</dd>
<dt><code>strict-origin-when-cross-origin</code></dt>
<dd>Wyśle origin, ścieżkę i string z zapytaniem podczas obsługi żądania same-orign, wyśle jedynie origin, jeśli poziom bezpieczeństwa protokołu pozostaje taki sam (HTTPS→HTTPS), natomiast nie wyśle nagłówka do destynacji o niższym poziomie bezpieczeństwa (HTTPS→HTTP).</dd>
<dt><code>unsafe-url</code></dt>
<dd>Wyśle origin, ścieżkę i string z zapytaniem podczas obsługi jakiegokolwiek zdarzenia, niezależnie od bezpieczeństwa.
<div class="blockIndicator warning">
<p>Niniejsza zasada może skutkować wyciekiem potencjalnie prywatnych informacji z URLów zasobów HTTPS do niebezpiecznych originów. Mocno się zastanów, zanim wybierzesz to ustawienie.</p>
</div>
</dd>
</dl>
<h2 id="Integracja_z_HTMLem">Integracja z HTMLem</h2>
<p>Możesz ustawić zasady polecającego także w HTMLu. Przykładowo, możesz ustawić zasadę polecającego dla całego dokumentu poprzez konfigurację elementu {{HTMLElement("meta")}} z <a href="/en-US/docs/Web/HTML/Element/meta#attr-name">name </a>równe <a href="/en-US/docs/Web/HTML/Element/meta#attr-name"><code>referrer</code></a>:</p>
<pre class="brush: html"><meta name="referrer" content="origin"></pre>
<p>Lub ustawić dla określonych żądań poprzez atrybut <code>referrerpolicy</code> na elementach {{HTMLElement("a")}}, {{HTMLElement("area")}}, {{HTMLElement("img")}}, {{HTMLElement("iframe")}}, {{HTMLElement("script")}} czy {{HTMLElement("link")}}:</p>
<pre class="brush: html"><a href="http://example.com" referrerpolicy="origin"></pre>
<p>Alternatywnie, w przypadku elementu <code>a</code>, <code>area</code>, bądź <code>link</code> możesz ustawić <a href="/en-US/docs/Web/HTML/Link_types">relację linku</a> na <code>noreferrer</code> :</p>
<pre class="brush: html"><a href="http://example.com" rel="noreferrer"></pre>
<h2 id="Integracja_z_CSSem">Integracja z CSSem</h2>
<p>CSS może przechwytywać zasoby wyszczególnione w arkuszach stylów. Niniejsze zasoby również podlegają zasadzie polecającego:</p>
<ul>
<li>Zewnętrzne arkusze stylów CSS używają domyślnej zasady (<code>no-referrer-when-downgrade</code>) chyba, że jest nadpisana przez nagłówek HTTP <code>Referrer-Policy</code> w odpowiedzi arkusza stylów CSS.</li>
<li>Dla elementów {{HTMLElement("style")}} lub<a href="/en-US/docs/Web/API/HTMLElement/style"> atrybutów</a> <a href="/en-US/docs/Web/API/HTMLElement/style"><code>style</code></a> aplikowana jest zasada właściciela dokumentu.</li>
</ul>
<h2 id="Przykłady">Przykłady</h2>
<table class="standard-table">
<thead>
<tr>
<th scope="col">Zasada</th>
<th scope="col">Document</th>
<th scope="col">Nawigacja do</th>
<th scope="col">Referrer</th>
</tr>
</thead>
<tbody>
<tr>
<th><code>no-referrer</code></th>
<td>https://example.com/page</td>
<td><em>gdziekolwiek</em></td>
<td><em>(no referrer)</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>(no referrer)</em></td>
</tr>
<tr>
<th><code>origin</code></th>
<td>https://example.com/page</td>
<td><em>anywhere</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>(no referrer)</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>(no referrer)</em></td>
</tr>
<tr>
<td><strong>http</strong>://example.com/page</td>
<td><em>anywhere</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>(no referrer)</em></td>
</tr>
<tr>
<th><code>unsafe-url</code></th>
<td>https://example.com/page?q=123</td>
<td><em>anywhere</em></td>
<td>https://example.com/page?q=123</td>
</tr>
</tbody>
</table>
<h3 id="Określanie_zasady_awaryjnej">Określanie zasady awaryjnej</h3>
<p>Jeśli chcesz określić zasadę awaryjną na wypadek, gdy pożądana zasada nie jest wspierana przez daną przeglądarkę, użyj listy oddzielonej przecinkiem, gdzie na samym końcu wpisujesz pożądaną zasadę:</p>
<pre><code>Referrer-Policy: no-referrer, strict-origin-when-cross-origin</code></pre>
<p>W przypadku powyższego scenariusza, <code>no-referrer</code> zostanie użyty jedynie, jeśli <code>strict-origin-when-cross-origin</code> nie jest wspierany przez daną przeglądarkę.</p>
<p class="note">Określanie wielu wartości jest wspierane jedynie w nagłówku HTTP <code>Referrer-Policy</code>, nie jest natomiast w atrybucie <code>referrerpolicy</code>.</p>
<h2 id="Specyfikacje">Specyfikacje</h2>
<table class="standard-table">
<thead>
<tr>
<th scope="col">Specyfikacja</th>
<th scope="col">Status</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-header">Zasada Referrera </a></td>
<td>Wersja robocza redaktora</td>
</tr>
</tbody>
</table>
<h2 id="Kompatybilność_z_przeglądarkami">Kompatybilność z przeglądarkami</h2>
<p>{{Compat("http.headers.Referrer-Policy")}}</p>
<div class="note">
<ul>
<li>Od wersji 53 w górę, Gecko posiada preferencję dostępną w <code>about:config</code>, by móc pozwolić użytkownikom na ustawienie ich domyślnego <code>Referrer-Policy</code> — <span class="quote"> <code>network.http.referer.userControlPolicy</code>.</span></li>
<li>Od wersji 59 w górę (Zobacz: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=587523">#587523</a>), zastąpiono ją przez <code>network.http.referer.defaultPolicy</code> oraz <code>network.http.referer.defaultPolicy.pbmode</code>.</li>
</ul>
<p>Dopuszczalne wartości to:</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> (domyślna)</li>
</ul>
</div>
<h2 id="Zobacz_również">Zobacz również</h2>
<ul>
<li>{{interwiki("wikipedia", "HTTP_referer", "HTTP referer on Wikipedia")}}</li>
<li>Kiedy używać <a href="/en-US/docs/Web/API/Fetch_API">Fetch</a>: {{domxref("Request.referrerPolicy")}}</li>
<li>Przestarzała dyrektywa <span style="white-space: nowrap;">{{HTTPHeader("Content-Security-Policy")}}</span> {{HTTPHeader("Content-Security-Policy/referrer", "referrer")}} {{Obsolete_Inline}}</li>
<li><a href="/en-US/docs/Web/Security/Same-origin_policy">Zasada same-origin</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>
|