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. - @@ -2534,13 +2536,11 @@ console.log((await fetch("/surprise-me", { redirect: "manual" })).type); // "opa


    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:

    Specifications should avoid introducing new exceptions and should only do so with careful @@ -4361,13 +4361,13 @@ steps:

  • request's current URL's host is a domain
  • Matching request's current URL's host per - Known HSTS Host Domain Name Matching + Known HSTS Host Domain Name Matching results in either a superdomain match with an asserted 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:
    1. If the user agent is not configured to block cookies for httpRequest (see - section 7 of + section 7 of [[!COOKIES]]), then:

      1. 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:

      2. 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]]

    2. Otherwise, set response to storedResponse and set response's cache state to "local". @@ -5548,12 +5547,11 @@ run these steps:

    3. Let forwardResponse be the result of running HTTP-network fetch given httpFetchParams, includeCredentials, and isNewConnectionFetch. -

    4. If httpRequest's method is - unsafe and +

    5. 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]]

    6. If the revalidatingFlag is set and forwardResponse's @@ -5563,8 +5561,8 @@ run these steps:

    7. 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:

    8. 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:

    9. 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}}.

    10. If init["{{ResponseInit/statusText}}"] does not match the - reason-phrase token production, then throw a {{TypeError}}. + reason-phrase token production, then throw a {{TypeError}}.

    11. Set response's response's status to init["{{ResponseInit/status}}"].