1212 github : "https://github.com/w3c/network-error-logging/" ,
1313 shortname : "network-error-logging" ,
1414 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" ] ,
1616 editors : [ {
1717 name : "Douglas Creager" ,
1818 url : "https://dcreager.net/" ,
@@ -117,7 +117,8 @@ <h2>Network requests</h2>
117117
118118 < p >
119119 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 > .
121122 </ p >
122123
123124 < p >
@@ -160,7 +161,8 @@ <h2>Network requests</h2>
160161 < li >
161162 < dfn > DNS resolution</ dfn > : The user agent uses the Domain Name System
162163 [[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.
164166 </ li >
165167
166168 < li >
@@ -179,11 +181,12 @@ <h2>Network requests</h2>
179181 < p >
180182 The only mandatory < a > phase</ a > is the < a > transmission of request and
181183 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
183185 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
187190 in the above order.
188191 </ p >
189192
@@ -196,7 +199,8 @@ <h2>Network requests</h2>
196199 A < a > network request</ a > is < dfn
197200 data-lt ="succeed|succeeded "> successful</ dfn > if the user agent is able
198201 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.
200204 </ p >
201205
202206 < p >
@@ -285,10 +289,11 @@ <h2>Network error reports</h2>
285289 < h2 > NEL policies</ h2 >
286290
287291 < 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 > .
292297 </ p >
293298
294299 < p >
@@ -333,14 +338,14 @@ <h2>NEL policies</h2>
333338
334339 < p >
335340 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).
338343 </ p >
339344
340345 < p >
341346 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).
344349 </ p >
345350 </ section >
346351
@@ -479,10 +484,10 @@ <h2>The <code>include_subdomains</code> member</h2>
479484 < p >
480485 The OPTIONAL < dfn > < code > include_subdomains</ code > </ dfn > member is a
481486 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.
486491 </ p >
487492
488493 < p class ="note ">
@@ -690,7 +695,7 @@ <h2>Process policy headers</h2>
690695 < dd > the value of < var > item</ var > 's < a > max_age</ a > member</ dd >
691696
692697 < 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 >
694699
695700 < dt > < a > successful sampling rate</ a > </ dt >
696701 < dd >
@@ -708,7 +713,7 @@ <h2>Process policy headers</h2>
708713
709714 < li >
710715 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
712717 < var > policy</ var > ; otherwise, insert < var > policy</ var > into the
713718 < a > policy cache</ a > for (< var > key</ var > , < var > origin</ var > ).
714719 </ li >
@@ -808,7 +813,7 @@ <h2>Extract request headers</h2>
808813 </ li >
809814
810815 < li >
811- For each < var > header</ var > in < var > request</ var > 's
816+ For each < var > header</ var > in < var > request</ var > 's
812817 [=request/header list=] whose < a
813818 data-lt ="header name "> name</ a > is < var > header name</ var > , append
814819 < var > header</ var > 's < a data-lt ="header value "> value</ a > to
@@ -862,7 +867,7 @@ <h2>Extract response headers</h2>
862867 </ li >
863868
864869 < li >
865- For each < var > header</ var > in < var > response</ var > 's
870+ For each < var > header</ var > in < var > response</ var > 's
866871 [=response/header list=] whose < a
867872 data-lt ="header name "> name</ a > is < var > header name</ var > , append
868873 < var > header</ var > 's < a data-lt ="header value "> value</ a > to
@@ -1007,7 +1012,9 @@ <h2>Extract response headers</h2>
10071012 </ dd >
10081013
10091014 < 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 >
10111018
10121019 < dt > < code > request_headers</ code > </ dt >
10131020 < dd >
@@ -1023,8 +1030,8 @@ <h2>Extract response headers</h2>
10231030
10241031 < dt > < code > status_code</ code > </ dt >
10251032 < 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 > .
10281035 </ dd >
10291036 </ dl >
10301037 </ li >
@@ -1373,12 +1380,12 @@ <h2>Sample Network Error Reports</h2>
13731380 This report indicates that the user agent attempted to navigate from
13741381 < code > example.com</ code > to < code > www.example.com</ code > , which
13751382 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.
13821389 </ p >
13831390
13841391 < pre class ="example ">
@@ -1481,12 +1488,14 @@ <h2>Monitoring cache validation</h2>
14811488
14821489 < p >
14831490 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.
14901499 </ p >
14911500
14921501 < p >
@@ -1893,7 +1902,7 @@ <h2>Privacy Considerations</h2>
18931902 NEL report only contains information available from DNS itself. This
18941903 prevents < a > servers</ a > from abusing NEL to collect more information about
18951904 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
18971906 < code > server_ip</ code > field, which may not always be known to the service
18981907 which generates the NEL header, for example if it is behind a load
18991908 balancer or other transparent MitM proxy.
0 commit comments