diff --git a/index.src.html b/index.src.html index 846ccb9..b78bab5 100644 --- a/index.src.html +++ b/index.src.html @@ -339,6 +339,11 @@

Framework

IP Address Space

+ Define {{IPAddressSpace}} as follows: +
+    enum IPAddressSpace { "public", "private", "local" };
+  
+ Every IP address belongs to an IP address space, which can be one of three different values: @@ -527,7 +532,7 @@

Private Network Request

a change is not deemed worth the payoff for now. This can be shipped as an incremental improvement later on. - NOTE: Some [=local network requests=] are more challenging to secure than + NOTE: Some [=private network requests=] are more challenging to secure than others. See [[#rollout-difficulties]] for more details.

Additional CORS Headers

@@ -918,14 +923,17 @@

Fetching

"`Private-Network-Access-ID`" and |response|'s [=response/header list=]. - 1. if |targetId| is invalid, return a [=network error=]. + 1. if |targetId| is not a string of 6 hexadecimal bytes + separated by colons, return a [=network error=]. 1. Let |targetName| be the result of [=extracting header list values=] given "`Private-Network-Access-Name`" and |response|'s [=response/header list=]. - 1. if |targetName| is invalid, return a [=network error=]. + 1. if |targetName| does not match the [ECMAScript] regexp + /^[a-z0-9_-.]+$/ or has more than 248 UTF-8 code units, + return a [=network error=]. 1. Let |state| be the result of [=requesting permission to use=] the following descriptor: @@ -960,10 +968,6 @@

Fetch API

The Fetch API needs to be adjusted as well. - - Define {{IPAddressSpace}} as follows. -
-        enum IPAddressSpace { "public","private", "local" };
-      
- Append an optional [=map/entry=] to {{RequestInfo}}, whose [=map/key=] is targetAddressSpace, and [=map/value=] is a {{IPAddressSpace}}. @@ -972,21 +976,32 @@

Fetch API

IPAddressSpace targetAddressSpace; }; + + - Define a new {=targetAddressSpace=} representing the + above in [=request=]. +
+        partial interface Request {
+          readonly attribute IPAddressSpace targetAddressSpace;
+        };
+      
+ - The new Request(input, |init|) is appended with the following step right before setting [=this=]'s [=request=] to |request|: - 1. If |init|["{{RequestInit/targetAddressSpace}}"] [=map/exists=], and - |request|'s [=request/client=] is a [=secure context=], then switch on - |init|["{{RequestInit/targetAddressSpace}}"]: + 1. If |init|["{{RequestInit/targetAddressSpace}}"] [=map/exists=], then + switch on |init|["{{RequestInit/targetAddressSpace}}"]:
+
public +
Do nothing. +
private
Set |request|'s [=target IP address space=] to [=IP address - space/private=] + space/private=].
local
Set |request|'s [=target IP address space=] to [=IP address - space/local=] + space/local=].

Forbidden header names