12
12
github : "https://github.com/w3c/network-error-logging/" ,
13
13
shortname : "network-error-logging" ,
14
14
specStatus : "ED" ,
15
- xref : [ "network-reporting" , "fetch" , "hr-time" , "html" , "referrer-policy" , "reporting" , "resource-timing" , "secure-contexts" , "url" ] ,
15
+ xref : [ "network-reporting" , "fetch" , "hr-time" , "html" , "referrer-policy" , "reporting" , "resource-timing" , "secure-contexts" , "url" ] ,
16
16
editors : [ {
17
17
name : "Douglas Creager" ,
18
18
url : "https://dcreager.net/" ,
@@ -117,7 +117,8 @@ <h2>Network requests</h2>
117
117
118
118
< p >
119
119
A < dfn data-lt ="network requests "> network request</ dfn > occurs when the
120
- user agent must use the network to service a single < dfn data-cite ="RFC7230#section-2.1 "> request</ dfn > .
120
+ user agent must use the network to service a single
121
+ < dfn data-cite ="RFC9110#core.semantics "> request</ dfn > .
121
122
</ p >
122
123
123
124
< p >
@@ -160,7 +161,8 @@ <h2>Network requests</h2>
160
161
< li >
161
162
< dfn > DNS resolution</ dfn > : The user agent uses the Domain Name System
162
163
[[RFC1034]] to resolve a domain name into an IP address of a
163
- < dfn data-cite ="RFC7230#section-2.1 "> server</ dfn > can that service HTTP requests to that domain.
164
+ < dfn data-cite ="RFC9110#core.semantics "> server</ dfn > can that service
165
+ HTTP requests to that domain.
164
166
</ li >
165
167
166
168
< li >
@@ -179,11 +181,12 @@ <h2>Network requests</h2>
179
181
< p >
180
182
The only mandatory < a > phase</ a > is the < a > transmission of request and
181
183
response</ a > ; the other < a > phases</ a > might not be needed for every
182
- < a > network request</ a > . For instance, DNS results can be cached locally
184
+ < a > network request</ a > . For instance, DNS results can be cached locally
183
185
in the user agent, eliminating < a > DNS resolution</ a > for future requests
184
- to the same domain. Similarly, HTTP < a data-cite ="RFC7230#section-6.3 "> persistent connections</ a > allow
185
- open connections to be shared for multiple requests to the same
186
- < a > origin</ a > . However, if multiple < a > phases</ a > occur, they will occur
186
+ to the same domain. Similarly, HTTP
187
+ < a data-cite ="RFC9112#persistent.connections "> persistent connections</ a >
188
+ allow open connections to be shared for multiple requests to the same
189
+ < a > origin</ a > . However, if multiple < a > phases</ a > occur, they will occur
187
190
in the above order.
188
191
</ p >
189
192
@@ -196,7 +199,8 @@ <h2>Network requests</h2>
196
199
A < a > network request</ a > is < dfn
197
200
data-lt ="succeed|succeeded "> successful</ dfn > if the user agent is able
198
201
to receive a valid HTTP response from the server, and that response does
199
- not have a < dfn data-cite ="RFC7231#section-6.5 "> 4xx</ dfn > or < dfn data-cite ="!RFC7231#section-6.6 "> 5xx</ dfn > status code.
202
+ not have a < dfn data-cite ="RFC9110#status.4xx "> 4xx</ dfn > or
203
+ < dfn data-cite ="RFC9110#status.5xx "> 5xx</ dfn > status code.
200
204
</ p >
201
205
202
206
< p >
@@ -285,10 +289,11 @@ <h2>Network error reports</h2>
285
289
< h2 > NEL policies</ h2 >
286
290
287
291
< p >
288
- A < dfn data-lt ="NEL policies|NEL policy " data-export id ="dfn-nel-policies "> NEL policy</ dfn > instructs a
289
- user agent whether to collect reports about < a > network requests</ a > to an
290
- < a > origin</ a > , and if so, where to send them. < a > NEL policies</ a > are
291
- delivered to the user agent via HTTP < dfn data-cite ="RFC7231#section-7 "> response headers</ dfn > .
292
+ A < dfn data-lt ="NEL policies|NEL policy " data-export id ="dfn-nel-policies "> NEL policy</ dfn >
293
+ instructs a user agent whether to collect reports about
294
+ < a > network requests</ a > to an < a > origin</ a > , and if so, where to send them.
295
+ < a > NEL policies</ a > are delivered to the user agent via HTTP
296
+ < dfn data-cite ="RFC9110#fields "> response headers</ dfn > .
292
297
</ p >
293
298
294
299
< p >
@@ -333,14 +338,14 @@ <h2>NEL policies</h2>
333
338
334
339
< p >
335
340
A < a > NEL policy</ a > is < dfn > stale</ dfn > if the < a > duration from</ a > its
336
- < a > creation</ a > to the < a > current wall time </ a > is greater than 172800
337
- seconds (48 hours).
341
+ < a > creation</ a > to the [=wall clock=]'s [= wall clock/unsafe current time=]
342
+ is greater than 172800 seconds (48 hours).
338
343
</ p >
339
344
340
345
< p >
341
346
A < a > NEL policy</ a > is < dfn > expired</ dfn > if the < a > duration from</ a > its
342
- < a > creation</ a > to the < a > current wall time </ a > is greater than its
343
- < a > ttl</ a > (in seconds).
347
+ < a > creation</ a > to the [=wall clock=]'s [= wall clock/unsafe current time=]
348
+ is greater than its < a > ttl</ a > (in seconds).
344
349
</ p >
345
350
</ section >
346
351
@@ -479,10 +484,10 @@ <h2>The <code>include_subdomains</code> member</h2>
479
484
< p >
480
485
The OPTIONAL < dfn > < code > include_subdomains</ code > </ dfn > member is a
481
486
boolean that enables this < a > NEL policy</ a > for all subdomains of this
482
- origin (to an unlimited subdomain depth). If no member named
483
- < code > include_subdomains</ code > is present in the object, or its value
484
- is not < code > true</ code > , the < a > NEL policy</ a > will not be enabled
485
- for subdomains.
487
+ origin (to an unlimited subdomain depth). If no member named
488
+ < code > include_subdomains</ code > is present in the object, or its value
489
+ is not < code > true</ code > , the < a > NEL policy</ a > will not be enabled
490
+ for subdomains.
486
491
</ p >
487
492
488
493
< p class ="note ">
@@ -690,7 +695,7 @@ <h2>Process policy headers</h2>
690
695
< dd > the value of < var > item</ var > 's < a > max_age</ a > member</ dd >
691
696
692
697
< dt > < a > creation</ a > </ dt >
693
- < dd > the < a > current wall time </ a > </ dd >
698
+ < dd > the [=wall clock=]'s [= wall clock/unsafe current time=] </ dd >
694
699
695
700
< dt > < a > successful sampling rate</ a > </ dt >
696
701
< dd >
@@ -708,7 +713,7 @@ <h2>Process policy headers</h2>
708
713
709
714
< li >
710
715
If there is already an entry in the < a > policy cache</ a > for
711
- (< var > key</ var > , < var > origin</ var > ), replace it with
716
+ (< var > key</ var > , < var > origin</ var > ), replace it with
712
717
< var > policy</ var > ; otherwise, insert < var > policy</ var > into the
713
718
< a > policy cache</ a > for (< var > key</ var > , < var > origin</ var > ).
714
719
</ li >
@@ -808,7 +813,7 @@ <h2>Extract request headers</h2>
808
813
</ li >
809
814
810
815
< li >
811
- For each < var > header</ var > in < var > request</ var > 's
816
+ For each < var > header</ var > in < var > request</ var > 's
812
817
[=request/header list=] whose < a
813
818
data-lt ="header name "> name</ a > is < var > header name</ var > , append
814
819
< var > header</ var > 's < a data-lt ="header value "> value</ a > to
@@ -862,7 +867,7 @@ <h2>Extract response headers</h2>
862
867
</ li >
863
868
864
869
< li >
865
- For each < var > header</ var > in < var > response</ var > 's
870
+ For each < var > header</ var > in < var > response</ var > 's
866
871
[=response/header list=] whose < a
867
872
data-lt ="header name "> name</ a > is < var > header name</ var > , append
868
873
< var > header</ var > 's < a data-lt ="header value "> value</ a > to
@@ -1007,7 +1012,9 @@ <h2>Extract response headers</h2>
1007
1012
</ dd >
1008
1013
1009
1014
< dt > < code > method</ code > </ dt >
1010
- < dd > < var > request</ var > 's < a data-cite ="RFC7231#section-4 "> request method</ a > .</ dd >
1015
+ < dd > < var > request</ var > 's
1016
+ < a data-cite ="RFC9110#method "> request method</ a > .
1017
+ </ dd >
1011
1018
1012
1019
< dt > < code > request_headers</ code > </ dt >
1013
1020
< dd >
@@ -1023,8 +1030,8 @@ <h2>Extract response headers</h2>
1023
1030
1024
1031
< dt > < code > status_code</ code > </ dt >
1025
1032
< dd >
1026
- The < a data-cite ="RFC7231#section-6 "> status code</ a > of the HTTP response, if available.
1027
- Otherwise, < code > 0</ code > .
1033
+ The < a data-cite ="RFC9110#status.code "> status code</ a > of the HTTP
1034
+ response, if available. Otherwise, < code > 0</ code > .
1028
1035
</ dd >
1029
1036
</ dl >
1030
1037
</ li >
@@ -1373,12 +1380,12 @@ <h2>Sample Network Error Reports</h2>
1373
1380
This report indicates that the user agent attempted to navigate from
1374
1381
< code > example.com</ code > to < code > www.example.com</ code > , which
1375
1382
successfully resolved to < code > 2001:DB8::42</ code > . However, while
1376
- the user agent received a < a data-cite ="!RFC7231#section-6.3.1 "> 200 response</ a > from the server via the
1377
- HTTP/2 (< code > h2</ code > ) protocol, it encountered a protocol error in
1378
- the exchange and was forced to abandon the navigation. The user agent
1379
- aborted the navigation 823 milliseconds after it started. Finally, the
1380
- user agent sent this report immediately after the network error was
1381
- encountered – i.e. the report age is 0.
1383
+ the user agent received a < a data-cite ="!RFC9110#status.200 "> 200 response</ a >
1384
+ from the server via the HTTP/2 (< code > h2</ code > ) protocol, it
1385
+ encountered a protocol error in the exchange and was forced to abandon
1386
+ the navigation. The user agent aborted the navigation 823 milliseconds
1387
+ after it started. Finally, the user agent sent this report immediately
1388
+ after the network error was encountered – i.e. the report age is 0.
1382
1389
</ p >
1383
1390
1384
1391
< pre class ="example ">
@@ -1481,12 +1488,14 @@ <h2>Monitoring cache validation</h2>
1481
1488
1482
1489
< p >
1483
1490
In this example, the owner of < code > example.com</ code > uses
1484
- < dfn data-cite ="RFC7232#section-2.3 "> < code > ETag</ code > </ dfn > response headers to identify different versions
1485
- of the resources hosted on the server. User agents can then use
1486
- < dfn data-cite ="RFC7232#section-3.2 "> < code > If-None-Match</ code > </ dfn > request headers to inform the server
1487
- which version of a resource is presently cached client-side, allowing
1488
- the server to avoid generating and sending the content of the resource
1489
- if the client's existing copy is up to date.
1491
+ < dfn data-cite ="RFC9110#field.etag "> < code > ETag</ code > </ dfn > response
1492
+ headers to identify different versions of the resources hosted on the
1493
+ server. User agents can then use
1494
+ < dfn data-cite ="RFC9110#field.if-none-match "> < code > If-None-Match</ code > </ dfn >
1495
+ request headers to inform the server which version of a resource is
1496
+ presently cached client-side, allowing the server to avoid generating
1497
+ and sending the content of the resource if the client's existing copy is
1498
+ up to date.
1490
1499
</ p >
1491
1500
1492
1501
< p >
@@ -1893,7 +1902,7 @@ <h2>Privacy Considerations</h2>
1893
1902
NEL report only contains information available from DNS itself. This
1894
1903
prevents < a > servers</ a > from abusing NEL to collect more information about
1895
1904
their users than they already have access to. Note that NEL reports will
1896
- include a web site's public IP address in the < a > report body</ a > 's
1905
+ include a web site's public IP address in the [= report/body|report body=] 's
1897
1906
< code > server_ip</ code > field, which may not always be known to the service
1898
1907
which generates the NEL header, for example if it is behind a load
1899
1908
balancer or other transparent MitM proxy.
0 commit comments