@@ -11,19 +11,32 @@ Translate IDs: typedefdef-bodyinit bodyinit,dictdef-requestinit requestinit,type
11
11
</pre>
12
12
13
13
<pre class=anchors>
14
- urlPrefix:https://datatracker.ietf.org/doc/html/rfc7230#;type:dfn;spec:http
15
- url:section-3.1.1;text:method
16
- url:section-3.2;text:field-name
17
- url:section-3.2;text:field-content
18
- url:section-3.2;text:field-value
19
- url:section-3.1.2;text:reason-phrase
20
-
21
- url:https://datatracker.ietf.org/doc/html/rfc7234#section-1.2.1;text:delta-seconds;type:dfn;spec:http-caching
22
-
23
- urlPrefix:https://datatracker.ietf.org/doc/html/rfc8941#;type:dfn;spec:rfc8941
24
- url:section-2;text:structured field value
25
- url:section-4.1;text:serializing structured fields
26
- url:section-4.2;text:parsing structured fields
14
+ urlPrefix:https://httpwg.org/specs/rfc5861.html#;type:dfn;spec:stale-while-revalidate
15
+ url:n-the-stale-while-revalidate-cache-control-extension;text:stale-while-revalidate lifetime
16
+
17
+ urlPrefix:https://httpwg.org/specs/rfc8941.html#;type:dfn;spec:rfc8941
18
+ url:rfc.section.2;text:structured field value
19
+ url:text-serialize;text:serializing structured fields
20
+ url:text-parse;text:parsing structured fields
21
+
22
+ urlPrefix:https://httpwg.org/specs/rfc9110.html#;type:dfn;spec:http
23
+ url:method.overview;text:method
24
+ url:fields.names;text:field-name
25
+ url:fields.values;text:field-value
26
+ url:rfc.section.9.2.1;text:unsafe
27
+
28
+ urlPrefix:https://httpwg.org/specs/rfc9111.html#;type:dfn;spec:http-caching
29
+ url:delta-seconds;text:delta-seconds
30
+ url:age.calculations;text:current age
31
+ url:calculating.freshness.lifetime;text:freshness lifetime
32
+ url:response.cacheability;text:Storing Responses in Caches
33
+ url:invalidation;text:Invalidating Stored Responses
34
+ url:validation.sent;text:Sending a Validation Request
35
+ url:constructing.responses.from.caches;text:Constructing Responses from Caches
36
+ url:freshening.responses;text:Freshening Stored Responses upon Validation
37
+
38
+ urlPrefix:https://httpwg.org/specs/rfc9112.html#;type:dfn;spec:http1
39
+ url:status.line;text:reason-phrase
27
40
28
41
url:https://w3c.github.io/resource-timing/#dfn-mark-resource-timing;text:mark resource timing;type:dfn;spec:resource-timing
29
42
@@ -50,6 +63,12 @@ urlPrefix:https://tc39.es/ecma262/#;type:dfn;spec:ecma-262
50
63
"HTTP1": {
51
64
"aliasOf": "RFC9112"
52
65
},
66
+ "HTTP3": {
67
+ "aliasOf": "RFC9114"
68
+ },
69
+ "HTTP3-DATAGRAM": {
70
+ "aliasOf": "RFC9297"
71
+ },
53
72
"REFERRER": {
54
73
"aliasOf": "referrer-policy"
55
74
},
@@ -77,33 +96,12 @@ urlPrefix:https://tc39.es/ecma262/#;type:dfn;spec:ecma-262
77
96
"href": "https://www.kb.cert.org/vuls/id/150227",
78
97
"title": "HTTP proxy default configurations allow arbitrary TCP connections."
79
98
},
80
- "EXPECT-CT": {
81
- "authors": ["Emily Stark"] ,
82
- "href": "https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-expect-ct",
83
- "publisher": "IETF",
84
- "title": "Expect-CT Extension for HTTP"
85
- },
86
- "OCSP": {
87
- "aliasOf": "RFC2560"
88
- },
89
- "HTTP3": {
90
- "authors": ["M. Bishop, Ed."] ,
91
- "href": "https://datatracker.ietf.org/doc/html/draft-ietf-quic-http",
92
- "publisher": "IETF",
93
- "title": "Hypertext Transfer Protocol Version 3 (HTTP/3)"
94
- },
95
99
"WEBTRANSPORT-HTTP3": {
96
100
"authors": ["V. Vasiliev"] ,
97
101
"href": "https://datatracker.ietf.org/doc/html/draft-ietf-webtrans-http3",
98
102
"publisher": "IETF",
99
103
"title": "WebTransport over HTTP/3"
100
104
},
101
- "HTTP3-DATAGRAM": {
102
- "authors": ["David Schinazi", "Lucas Pardue"] ,
103
- "href": "https://datatracker.ietf.org/doc/html/draft-ietf-masque-h3-datagram",
104
- "publisher": "IETF",
105
- "title": "Using QUIC Datagrams with HTTP/3"
106
- },
107
105
"SVCB": {
108
106
"authors": ["Ben Schwartz", "Mike Bishop", "Erik Nygren"] ,
109
107
"href": "https://datatracker.ietf.org/doc/html/draft-ietf-dnsop-svcb-https",
@@ -564,6 +562,10 @@ consistency.
564
562
565
563
<h4 id=terminology-headers>Headers</h4>
566
564
565
+ <p class=note> HTTP generally refers to a header as a "field" or "header field". The web platform
566
+ uses the more colloquial term "header". [[HTTP]]
567
+ <!-- This will become more hairy if we add trailer support. -->
568
+
567
569
<p> A <dfn export id=concept-header-list>header list</dfn> is a <a for=/>list</a> of zero or more
568
570
<a for=/>headers</a> . It is initially « ».
569
571
@@ -916,9 +918,9 @@ conditions:
916
918
<li><p> Contains no 0x00 (NUL) or <a>HTTP newline bytes</a> .
917
919
</ul>
918
920
919
- <p class=note> The definition of <a for=/>header value</a> is not defined in terms of an HTTP token
920
- production as
921
- <a href=https://github.com/httpwg/http11bis /issues/19 title="fix field-value ABNF">it is broken </a> .
921
+ <p class=note> The definition of <a for=/>header value</a> is not defined in terms of the
922
+ <a spec=http>field-value</a> token production as it is
923
+ <a href=https://github.com/httpwg/http-core /issues/215 title="field-value value space">not compatible with deployed content </a> .
922
924
923
925
<div algorithm>
924
926
<p> To <dfn export for="header value" id=concept-header-value-normalize>normalize</dfn> a
@@ -1023,7 +1025,7 @@ following is true:
1023
1025
<li><p><var> byte</var> is 0x22 ("), 0x28 (left parenthesis), 0x29 (right parenthesis), 0x3A (:),
1024
1026
0x3C (<), 0x3E (>), 0x3F (?), 0x40 (@), 0x5B ([), 0x5C (\), 0x5D (] ), 0x7B ({), 0x7D (}), or
1025
1027
0x7F DEL.
1026
- <!-- Delimiters from https://datatracker.ietf. org/doc/ html/rfc7230#section-3.2.6 except for ,/;=
1028
+ <!-- Delimiters from https://httpwg. org/specs/rfc9110. html#rule.token.separators except for ,/;=
1027
1029
and including DEL -->
1028
1030
</ul>
1029
1031
</div>
@@ -2534,13 +2536,11 @@ console.log((await fetch("/surprise-me", { redirect: "manual" })).type); // "opa
2534
2536
<hr>
2535
2537
2536
2538
<p> A <dfn id=concept-fresh-response>fresh response</dfn> is a <a for=/>response</a> whose
2537
- <a href=https://datatracker.ietf.org/doc/html/rfc7234#section-4.2.3>current age</a> is within its
2538
- <a href=https://datatracker.ietf.org/doc/html/rfc7234#section-4.2.1>freshness lifetime</a> .
2539
+ <a>current age</a> is within its <a>freshness lifetime</a> .
2539
2540
2540
2541
<p> A <dfn id=concept-stale-while-revalidate-response>stale-while-revalidate response</dfn> is a
2541
- <a for=/>response</a> that is not a <a>fresh response</a> and whose
2542
- <a href=https://datatracker.ietf.org/doc/html/rfc7234#section-4.2.3>current age</a> is within the
2543
- <a href=https://datatracker.ietf.org/doc/html/rfc5861#section-3>stale-while-revalidate lifetime</a> .
2542
+ <a for=/>response</a> that is not a <a>fresh response</a> and whose <a>current age</a> is within the
2543
+ <a>stale-while-revalidate lifetime</a> . [[!HTTP-CACHING]] [[!STALE-WHILE-REVALIDATE]]
2544
2544
2545
2545
<p> A <dfn export id=concept-stale-response>stale response</dfn> is a <a for=/>response</a> that is
2546
2546
not a <a>fresh response</a> or a <a>stale-while-revalidate response</a> .
@@ -3629,9 +3629,9 @@ values:
3629
3629
3630
3630
<ul class=brief>
3631
3631
<li> `<code> application/csp-report</code> ` [[CSP]]
3632
- <li> `<code> application/expect-ct-report+json</code> ` [[EXPECT-CT ]]
3632
+ <li> `<code> application/expect-ct-report+json</code> ` [[RFC9163 ]]
3633
3633
<li> `<code> application/xss-auditor-report</code> `
3634
- <li> `<code> application/ocsp-request</code> ` [[OCSP ]]
3634
+ <li> `<code> application/ocsp-request</code> ` [[RFC6960 ]]
3635
3635
</ul>
3636
3636
3637
3637
<p> Specifications should avoid introducing new exceptions and should only do so with careful
@@ -4361,13 +4361,13 @@ steps:
4361
4361
<li><var> request</var> 's <a for=request>current URL</a>' s <a for=url>host</a> is a
4362
4362
<a for=/>domain</a>
4363
4363
<li> Matching <var> request</var> 's <a for=request>current URL</a>' s <a for=url>host</a> per
4364
- <a href=https://datatracker.ietf .org/doc/html/ rfc6797#section-8.2>Known HSTS Host Domain Name Matching</a>
4364
+ <a href=https://www.rfc-editor .org/rfc/ rfc6797.html #section-8.2>Known HSTS Host Domain Name Matching</a>
4365
4365
results in either a superdomain match with an asserted <code> includeSubDomains</code> directive
4366
4366
or a congruent match (with or without an asserted <code> includeSubDomains</code> directive) [[!HSTS]] ; or
4367
4367
DNS resolution for the request finds a matching HTTPS RR per
4368
4368
<a href=https://datatracker.ietf.org/doc/html/draft-ietf-dnsop-svcb-https#section-9.5>section 9.5</a>
4369
4369
of [[!SVCB]] .
4370
- [[!HSTS]][[!SVCB]]
4370
+ [[!HSTS]] [[!SVCB]]
4371
4371
</ul>
4372
4372
<!-- Per Mike West HSTS happens "probably after" Referrer -->
4373
4373
@@ -5395,12 +5395,12 @@ run these steps:
5395
5395
<ol>
5396
5396
<li>
5397
5397
<p> If the user agent is not configured to block cookies for <var> httpRequest</var> (see
5398
- <a href=https://datatracker.ietf. org/doc/html/ rfc6265#section-7 >section 7</a> of
5398
+ <a href=https://httpwg. org/specs/ rfc6265.html#privacy-considerations >section 7</a> of
5399
5399
[[!COOKIES]] ), then:
5400
5400
5401
5401
<ol>
5402
5402
<li><p> Let <var> cookies</var> be the result of running the "cookie-string" algorithm (see
5403
- <a href=https://datatracker.ietf. org/doc/html/ rfc6265#section-5.4 >section 5.4</a> of
5403
+ <a href=https://httpwg. org/specs/ rfc6265.html#cookie >section 5.4</a> of
5404
5404
[[!COOKIES]] ) with the user agent's cookie store and <var> httpRequest</var> 's
5405
5405
<a for=request>current URL</a> .
5406
5406
@@ -5454,8 +5454,8 @@ run these steps:
5454
5454
<li>
5455
5455
<p> Set <var> storedResponse</var> to the result of selecting a response from the
5456
5456
<var> httpCache</var> , possibly needing validation, as per the
5457
- "<a href=https://datatracker.ietf.org/doc/html/rfc7234#section-4 >Constructing Responses from Caches</a> "
5458
- chapter of <cite> HTTP Caching </cite> [[!HTTP-CACHING]] , if any.
5457
+ "<a>Constructing Responses from Caches</a> " chapter of <cite> HTTP Caching </cite> , if any.
5458
+ [[!HTTP-CACHING]]
5459
5459
5460
5460
<p class=note> As mandated by HTTP, this still takes the `<code> Vary</code> `
5461
5461
<a for=/>header</a> into account.
@@ -5522,9 +5522,8 @@ run these steps:
5522
5522
<a for=request>header list</a> .
5523
5523
</ol>
5524
5524
5525
- <p class=note> See also the
5526
- "<a href=https://datatracker.ietf.org/doc/html/rfc7234#section-4.3.4>Sending a Validation Request</a> "
5527
- chapter of <cite> HTTP Caching</cite> [[!HTTP-CACHING]] .
5525
+ <p class=note> See also the "<a>Sending a Validation Request</a> " chapter of
5526
+ <cite> HTTP Caching</cite> . [[!HTTP-CACHING]]
5528
5527
5529
5528
<li><p> Otherwise, set <var> response</var> to <var> storedResponse</var> and set
5530
5529
<var> response</var> 's <a for=response>cache state</a> to "<code> local</code> ".
@@ -5548,12 +5547,11 @@ run these steps:
5548
5547
<li><p> Let <var> forwardResponse</var> be the result of running <a>HTTP-network fetch</a> given
5549
5548
<var> httpFetchParams</var> , <var> includeCredentials</var> , and <var> isNewConnectionFetch</var> .
5550
5549
5551
- <li><p> If <var> httpRequest</var> 's <a for=request>method</a> is
5552
- <a href=https://datatracker.ietf.org/doc/html/rfc7231#section-4.2.1>unsafe</a> and
5550
+ <li><p> If <var> httpRequest</var> 's <a for=request>method</a> is <a>unsafe</a> and
5553
5551
<var> forwardResponse</var> 's <a for=response>status</a> is in the range 200 to 399, inclusive,
5554
5552
invalidate appropriate stored responses in <var> httpCache</var> , as per the
5555
- "<a href=https://datatracker.ietf.org/doc/html/rfc7234#section-4.4>Invalidation </a> " chapter of
5556
- <cite> HTTP Caching </cite> , and set < var> storedResponse</var> to null. [[!HTTP-CACHING]]
5553
+ "<a>Invalidating Stored Responses </a> " chapter of <cite> HTTP Caching </cite> , and set
5554
+ <var> storedResponse</var> to null. [[!HTTP-CACHING]]
5557
5555
5558
5556
<li>
5559
5557
<p> If the <var> revalidatingFlag</var> is set and <var> forwardResponse</var> 's
@@ -5563,8 +5561,8 @@ run these steps:
5563
5561
<li>
5564
5562
<p> Update <var> storedResponse</var> 's <a for=response>header list</a> using
5565
5563
<var> forwardResponse</var> 's <a for=response>header list</a> , as per the
5566
- "<a href=https://datatracker.ietf.org/doc/html/rfc7234#section-4.3.4 >Freshening Stored Responses upon Validation</a> "
5567
- chapter of <cite> HTTP Caching </cite> . [[!HTTP-CACHING]]
5564
+ "<a>Freshening Stored Responses upon Validation</a> " chapter of <cite> HTTP Caching </cite> .
5565
+ [[!HTTP-CACHING]]
5568
5566
5569
5567
<p class="note"> This updates the stored response in cache as well.
5570
5568
@@ -5581,8 +5579,8 @@ run these steps:
5581
5579
5582
5580
<li>
5583
5581
<p> Store <var> httpRequest</var> and <var> forwardResponse</var> in <var> httpCache</var> , as per
5584
- the "<a href=https://datatracker.ietf.org/doc/html/rfc7234#section-3 >Storing Responses in Caches</a> "
5585
- chapter of <cite> HTTP Caching </cite> . [[!HTTP-CACHING]]
5582
+ the "<a>Storing Responses in Caches</a> " chapter of <cite> HTTP Caching </cite> .
5583
+ [[!HTTP-CACHING]]
5586
5584
5587
5585
<p class=note> If <var> forwardResponse</var> is a <a>network error</a> , this effectively caches
5588
5586
the network error, which is sometimes known as "negative caching".
@@ -5941,10 +5939,10 @@ optional boolean <var>forceNewConnection</var> (default false), run these steps:
5941
5939
5942
5940
<li><p tracking-vector> If <var> includeCredentials</var> is true and the user agent is not
5943
5941
configured to block cookies for <var> request</var> (see
5944
- <a href=https://datatracker.ietf. org/doc/html/ rfc6265#section-7 >section 7</a> of [[!COOKIES]] ),
5945
- then run the "set-cookie-string" parsing algorithm (see
5946
- <a href=https://datatracker.ietf. org/doc/html/ rfc6265#section-5.2 >section 5.2</a> of [[!COOKIES]] )
5947
- on the <a for=header>value</a> of each <var> header</var> whose <a for=header>name</a> is a
5942
+ <a href=https://httpwg. org/specs/ rfc6265.html#privacy-considerations >section 7</a> of
5943
+ [[!COOKIES]] ), then run the "set-cookie-string" parsing algorithm (see
5944
+ <a href=https://httpwg. org/specs/ rfc6265.html#set-cookie >section 5.2</a> of [[!COOKIES]] ) on the
5945
+ <a for=header>value</a> of each <var> header</var> whose <a for=header>name</a> is a
5948
5946
<a>byte-case-insensitive</a> match for `<code> Set-Cookie</code> ` in <var> response</var> 's
5949
5947
<a for=response>header list</a> , if any, and <var> request</var> 's <a for=request>current URL</a> .
5950
5948
@@ -7848,7 +7846,7 @@ these steps:
7848
7846
then <a>throw</a> a {{RangeError}} .
7849
7847
7850
7848
<li><p> If <var> init</var> ["{{ResponseInit/statusText}}"] does not match the
7851
- <a spec=http >reason-phrase</a> token production, then <a>throw</a> a {{TypeError}} .
7849
+ <a spec=http1 >reason-phrase</a> token production, then <a>throw</a> a {{TypeError}} .
7852
7850
7853
7851
<li><p> Set <var> response</var> 's <a for=Response>response</a>' s <a for=response>status</a> to
7854
7852
<var> init</var> ["{{ResponseInit/status}}"] .
0 commit comments