diff --git a/fetch.bs b/fetch.bs index f7f2673f3..43a79773a 100644 --- a/fetch.bs +++ b/fetch.bs @@ -11,19 +11,32 @@ Translate IDs: typedefdef-bodyinit bodyinit,dictdef-requestinit requestinit,type
-urlPrefix:https://datatracker.ietf.org/doc/html/rfc7230#;type:dfn;spec:http - url:section-3.1.1;text:method - url:section-3.2;text:field-name - url:section-3.2;text:field-content - url:section-3.2;text:field-value - url:section-3.1.2;text:reason-phrase - -url:https://datatracker.ietf.org/doc/html/rfc7234#section-1.2.1;text:delta-seconds;type:dfn;spec:http-caching - -urlPrefix:https://datatracker.ietf.org/doc/html/rfc8941#;type:dfn;spec:rfc8941 - url:section-2;text:structured field value - url:section-4.1;text:serializing structured fields - url:section-4.2;text:parsing structured fields +urlPrefix:https://httpwg.org/specs/rfc5861.html#;type:dfn;spec:stale-while-revalidate + url:n-the-stale-while-revalidate-cache-control-extension;text:stale-while-revalidate lifetime + +urlPrefix:https://httpwg.org/specs/rfc8941.html#;type:dfn;spec:rfc8941 + url:rfc.section.2;text:structured field value + url:text-serialize;text:serializing structured fields + url:text-parse;text:parsing structured fields + +urlPrefix:https://httpwg.org/specs/rfc9110.html#;type:dfn;spec:http + url:method.overview;text:method + url:fields.names;text:field-name + url:fields.values;text:field-value + url:rfc.section.9.2.1;text:unsafe + +urlPrefix:https://httpwg.org/specs/rfc9111.html#;type:dfn;spec:http-caching + url:delta-seconds;text:delta-seconds + url:age.calculations;text:current age + url:calculating.freshness.lifetime;text:freshness lifetime + url:response.cacheability;text:Storing Responses in Caches + url:invalidation;text:Invalidating Stored Responses + url:validation.sent;text:Sending a Validation Request + url:constructing.responses.from.caches;text:Constructing Responses from Caches + url:freshening.responses;text:Freshening Stored Responses upon Validation + +urlPrefix:https://httpwg.org/specs/rfc9112.html#;type:dfn;spec:http1 + url:status.line;text:reason-phrase url:https://w3c.github.io/resource-timing/#dfn-mark-resource-timing;text:mark resource timing;type:dfn;spec:resource-timing @@ -50,6 +63,12 @@ urlPrefix:https://tc39.es/ecma262/#;type:dfn;spec:ecma-262 "HTTP1": { "aliasOf": "RFC9112" }, + "HTTP3": { + "aliasOf": "RFC9114" + }, + "HTTP3-DATAGRAM": { + "aliasOf": "RFC9297" + }, "REFERRER": { "aliasOf": "referrer-policy" }, @@ -77,33 +96,12 @@ urlPrefix:https://tc39.es/ecma262/#;type:dfn;spec:ecma-262 "href": "https://www.kb.cert.org/vuls/id/150227", "title": "HTTP proxy default configurations allow arbitrary TCP connections." }, - "EXPECT-CT": { - "authors": ["Emily Stark"], - "href": "https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-expect-ct", - "publisher": "IETF", - "title": "Expect-CT Extension for HTTP" - }, - "OCSP": { - "aliasOf": "RFC2560" - }, - "HTTP3": { - "authors": ["M. Bishop, Ed."], - "href": "https://datatracker.ietf.org/doc/html/draft-ietf-quic-http", - "publisher": "IETF", - "title": "Hypertext Transfer Protocol Version 3 (HTTP/3)" - }, "WEBTRANSPORT-HTTP3": { "authors": ["V. Vasiliev"], "href": "https://datatracker.ietf.org/doc/html/draft-ietf-webtrans-http3", "publisher": "IETF", "title": "WebTransport over HTTP/3" }, - "HTTP3-DATAGRAM": { - "authors": ["David Schinazi", "Lucas Pardue"], - "href": "https://datatracker.ietf.org/doc/html/draft-ietf-masque-h3-datagram", - "publisher": "IETF", - "title": "Using QUIC Datagrams with HTTP/3" - }, "SVCB": { "authors": ["Ben Schwartz", "Mike Bishop", "Erik Nygren"], "href": "https://datatracker.ietf.org/doc/html/draft-ietf-dnsop-svcb-https", @@ -564,6 +562,10 @@ consistency.Headers
+HTTP generally refers to a header as a "field" or "header field". The web platform +uses the more colloquial term "header". [[HTTP]] + +
A header list is a list of zero or more headers. It is initially « ». @@ -916,9 +918,9 @@ conditions:
Contains no 0x00 (NUL) or HTTP newline bytes. -
The definition of header value is not defined in terms of an HTTP token -production as -it is broken. +
The definition of header value is not defined in terms of the +field-value token production as it is +not compatible with deployed content.
To normalize a @@ -1023,7 +1025,7 @@ following is true:
byte is 0x22 ("), 0x28 (left parenthesis), 0x29 (right parenthesis), 0x3A (:), 0x3C (<), 0x3E (>), 0x3F (?), 0x40 (@), 0x5B ([), 0x5C (\), 0x5D (]), 0x7B ({), 0x7D (}), or 0x7F DEL. -
A fresh response is a response whose -current age is within its -freshness lifetime. +current age is within its freshness lifetime.
A stale-while-revalidate response is a -response that is not a fresh response and whose -current age is within the -stale-while-revalidate lifetime. +response that is not a fresh response and whose current age is within the +stale-while-revalidate lifetime. [[!HTTP-CACHING]] [[!STALE-WHILE-REVALIDATE]]
A stale response is a response that is not a fresh response or a stale-while-revalidate response. @@ -3629,9 +3629,9 @@ values:
application/csp-report
` [[CSP]]
- application/expect-ct-report+json
` [[EXPECT-CT]]
+ application/expect-ct-report+json
` [[RFC9163]]
application/xss-auditor-report
`
- application/ocsp-request
` [[OCSP]]
+ application/ocsp-request
` [[RFC6960]]
Specifications should avoid introducing new exceptions and should only do so with careful @@ -4361,13 +4361,13 @@ steps:
includeSubDomains
directive
or a congruent match (with or without an asserted includeSubDomains
directive) [[!HSTS]]; or
DNS resolution for the request finds a matching HTTPS RR per
section 9.5
of [[!SVCB]].
- [[!HSTS]][[!SVCB]]
+ [[!HSTS]] [[!SVCB]]
@@ -5395,12 +5395,12 @@ run these steps:
If the user agent is not configured to block cookies for httpRequest (see - section 7 of + section 7 of [[!COOKIES]]), then:
Let cookies be the result of running the "cookie-string" algorithm (see - section 5.4 of + section 5.4 of [[!COOKIES]]) with the user agent's cookie store and httpRequest's current URL. @@ -5454,8 +5454,8 @@ run these steps:
Set storedResponse to the result of selecting a response from the httpCache, possibly needing validation, as per the - "Constructing Responses from Caches" - chapter of HTTP Caching [[!HTTP-CACHING]], if any. + "Constructing Responses from Caches" chapter of HTTP Caching, if any. + [[!HTTP-CACHING]]
As mandated by HTTP, this still takes the `Vary
`
header into account.
@@ -5522,9 +5522,8 @@ run these steps:
header list.
See also the - "Sending a Validation Request" - chapter of HTTP Caching [[!HTTP-CACHING]]. +
See also the "Sending a Validation Request" chapter of + HTTP Caching. [[!HTTP-CACHING]]
Otherwise, set response to storedResponse and set
response's cache state to "local
".
@@ -5548,12 +5547,11 @@ run these steps:
Let forwardResponse be the result of running HTTP-network fetch given httpFetchParams, includeCredentials, and isNewConnectionFetch. -
If httpRequest's method is unsafe and forwardResponse's status is in the range 200 to 399, inclusive, invalidate appropriate stored responses in httpCache, as per the - "Invalidation" chapter of - HTTP Caching, and set storedResponse to null. [[!HTTP-CACHING]] + "Invalidating Stored Responses" chapter of HTTP Caching, and set + storedResponse to null. [[!HTTP-CACHING]]
If the revalidatingFlag is set and forwardResponse's @@ -5563,8 +5561,8 @@ run these steps:
Update storedResponse's header list using forwardResponse's header list, as per the - "Freshening Stored Responses upon Validation" - chapter of HTTP Caching. [[!HTTP-CACHING]] + "Freshening Stored Responses upon Validation" chapter of HTTP Caching. + [[!HTTP-CACHING]]
This updates the stored response in cache as well. @@ -5581,8 +5579,8 @@ run these steps:
Store httpRequest and forwardResponse in httpCache, as per - the "Storing Responses in Caches" - chapter of HTTP Caching. [[!HTTP-CACHING]] + the "Storing Responses in Caches" chapter of HTTP Caching. + [[!HTTP-CACHING]]
If forwardResponse is a network error, this effectively caches the network error, which is sometimes known as "negative caching". @@ -5941,10 +5939,10 @@ optional boolean forceNewConnection (default false), run these steps:
If includeCredentials is true and the user agent is not
configured to block cookies for request (see
- section 7 of [[!COOKIES]]),
- then run the "set-cookie-string" parsing algorithm (see
- section 5.2 of [[!COOKIES]])
- on the value of each header whose name is a
+ section 7 of
+ [[!COOKIES]]), then run the "set-cookie-string" parsing algorithm (see
+ section 5.2 of [[!COOKIES]]) on the
+ value of each header whose name is a
byte-case-insensitive match for `Set-Cookie
` in response's
header list, if any, and request's current URL.
@@ -7848,7 +7846,7 @@ these steps:
then throw a {{RangeError}}.
If init["{{ResponseInit/statusText}}"] does not match the - reason-phrase token production, then throw a {{TypeError}}. + reason-phrase token production, then throw a {{TypeError}}.
Set response's response's status to init["{{ResponseInit/status}}"].