diff --git a/fetch.bs b/fetch.bs index 8d19ae84d..567638330 100755 --- a/fetch.bs +++ b/fetch.bs @@ -183,7 +183,7 @@ exposes most of the networking functionality at a fairly low level of abstractio
This specification uses terminology from ABNF, Encoding, HTML, HTTP, MIME Sniffing, Streams, -URL, Web IDL, and WebSockets. +URL, Web IDL, WebSockets, and WebTransport. [[!ABNF]] [[!ENCODING]] [[!HTML]] @@ -193,6 +193,7 @@ exposes most of the networking functionality at a fairly low level of abstractio [[!URL]] [[!WEBIDL]] [[!WEBSOCKETS]] +[[!WEBTRANSPORT]]
ABNF means ABNF as augmented by HTTP (in particular the addition of #)
and RFC 7405. [[!RFC7405]]
@@ -1889,7 +1890,7 @@ not always relevant and might require different behavior.
navigator.sendBeacon(), {{EventSource}},
HTML's <a ping=""> and <area ping="">,
fetch(), fetchLater(), {{XMLHttpRequest}},
- {{WebSocket}}, Cache API
+ {{WebSocket}}, {{WebTransport}}, Cache API
object"
object-src
@@ -2045,8 +2046,8 @@ during fetching. It provides a convenient way for standard
A request has an associated
mode, which is
"same-origin", "cors", "no-cors",
-"navigate", or "websocket". Unless stated otherwise, it is
-"no-cors".
+"navigate", "websocket", or "webtransport".
+Unless stated otherwise, it is "no-cors".
websocket"
webtransport"
+ Even though the default request mode is "no-cors",
@@ -3581,7 +3585,7 @@ given a request request, run these steps:
with request.
If request's response tainting is "cors" or
- request's mode is "websocket", then
+ request's mode is either "websocket" or "webtransport", then
append (`Origin`, serializedOrigin) to
request's header list.
@@ -4841,7 +4845,7 @@ steps:
data"
navigate" or "websocket"
+ "navigate", "websocket" or "webtransport"
Set request's @@ -6424,6 +6428,11 @@ optional boolean forceNewConnection (default false), run these steps: obtaining a WebSocket connection, given request's current URL. +
webtransport"
+ Let connection be the result of + obtaining a WebTransport connection, given + networkPartitionKey, and request. +
Let connection be the result of obtaining a connection, given networkPartitionKey, @@ -8325,8 +8334,9 @@ enum RequestPriority { "high", "low", "auto" };
"serviceworker" is omitted from
RequestDestination as it cannot be observed from JavaScript. Implementations
-will still need to support it as a destination. "websocket" is
-omitted from RequestMode as it cannot be used nor observed from JavaScript.
+will still need to support it as a destination. "websocket" and
+"webtransport" are omitted from RequestMode as they cannot be
+used or observed from JavaScript.
A {{Request}} object has an associated
request (a request).
@@ -9794,6 +9804,18 @@ requests — and do not use `Vary`.
establish a WebSocket connection directly, but
both are now defined in WebSockets. [[WEBSOCKETS]]
+
As part of establishing a connection, the {{WebTransport}} object initiates a special kind of
+fetch (using a request whose mode is
+"webtransport") which allows it to share in many fetch policy decisions, such
+HTTP Strict Transport Security (HSTS). Ultimately this results in fetch calling into
+WebTransport which in turn obtains a connection.
+[[WEBTRANSPORT]][[HSTS]]
+
+
WebTransport needs to wrap the obtain a connection +algorithm to add features unique to WebTransport, like +{{WebTransportOptions/serverCertificateHashes}}. [[WEBTRANSPORT]]