- From: Roy Fielding via cvs-syncmail <cvsmail@w3.org>
- Date: Mon, 21 May 2012 10:11:47 +0000
- To: public-tracking-commit@w3.org
Update of /w3ccvs/WWW/2011/tracking-protection/drafts In directory hutz:/tmp/cvs-serv31744 Modified Files: tracking-dnt.html Log Message: ACTION-198: first pass at updating the response proposals so that a resource can use the Tk header field to indicate compliance and refer to a specific tracking status resource. Eliminate the path and partners members. Combine the edit and options members into control. Index: tracking-dnt.html =================================================================== RCS file: /w3ccvs/WWW/2011/tracking-protection/drafts/tracking-dnt.html,v retrieving revision 1.115 retrieving revision 1.116 diff -u -d -r1.115 -r1.116 --- tracking-dnt.html 21 May 2012 09:34:13 -0000 1.115 +++ tracking-dnt.html 21 May 2012 10:11:45 -0000 1.116 @@ -529,33 +529,37 @@ leads to such a representation. A user agent MAY consider failure to provide access to such a representation equivalent to the origin server not implementing - this protocol. The representation might be cached, as described + this protocol. The representation MAY be cached, as described in <a href="#status-caching" class="sectionRef"></a>. </p> <p> - If an origin server contains multiple services that are controlled - by distinct parties or that might have differing behavior or - policies regarding tracking, then it MAY also provide a space of - well-known resources for obtaining information about the potential - tracking behavior of each specific service. This parallel tree of - resources is called the <dfn>tracking status resource space</dfn>. + If an origin server has multiple, resource-specific tracking + policies, such that the tracking status might differ depending on + some aspect of the request (e.g., method, target URI, header + fields, data, etc.), the origin server MAY provide an additional + subtree of well-known resources corresponding to each of those + distinct tracking statuses. The Tk response header field + (<a href="#response-header-field" class="sectionRef"></a>) can + include a <a>status-id</a> to indicate which specific tracking + status resource applies to the current request. + This subtree of resources is called the <dfn>tracking status + resource space</dfn>. </p> <p> The <dfn>tracking status resource space</dfn> is defined by the following URI Template [[URI-TEMPLATE]]: </p> - <pre>/.well-known/dnt{+pathinfo}</pre> + <pre>/.well-known/dnt{/status-id}</pre> <p> - where the value of <code>pathinfo</code> is equal to the - path component [[RFC3986]] of a given reference to that - origin server, excluding those references already within the above - resource space. For example, a reference to + where the value of <code>status-id</code> is a string of URI-safe + characters provided by a Tk field-value in response to a prior + request. For example, a prior response containing </p> - <pre>http://example.com/over/here?q=hello#top</pre> + <pre>Tk: 1;fRx42</pre> <p> - MAY have a corresponding tracking status resource identified by + refers to the specific tracking status resource </p> - <pre>http://example.com/.well-known/dnt/over/here</pre> + <pre>/.well-known/dnt/fRx42</pre> <p> Resources within the tracking status resource space are represented using the same format as a site-wide tracking status @@ -597,7 +601,6 @@ </p> <pre class="example"> { - "path": "/", "tracking": true, "received": "1", "response": "t1", @@ -606,12 +609,8 @@ "example_vids.net", "example_stats.com" ], - "partners": [ - "api.example-third-party.com" - ], "policy": "/tracking.html", - "edit": "http://example-third-party.com/your/data", - "options": "http://example-third-party.com/your/consent" + "control": "http://example-third-party.com/your/data" } </pre> <p> @@ -620,26 +619,6 @@ status applicable to this user agent's request. </p> <p> - If the <a>status-object</a> has an OPTIONAL <code><a>path</a></code> - member, then this object describes the tracking status for the - entire space of resources that share the same path prefix as - the value of <code><a>path</a></code>. - The user agent MUST interpret the <code><a>path</a></code> value - relative to the originally referenced resource, not the resource - where it obtained the tracking status representation. - </p> - <p> - For the site-wide tracking status resource, the presence of a - <code><a>path</a></code> member with a value of "/" indicates - that this <a>status-object</a> applies for the entire origin - server of the originally referenced resource. - If the originally referenced resource's path component does not - share the same prefix as the value of <code><a>path</a></code>, or - if the <code><a>path</a></code> member is absent, then the - tracking status for the referenced resource MAY be obtained via a - request on the corresponding tracking status resource space. - </p> - <p> A <a>status-object</a> MUST have a member named <code><a>tracking</a></code> with a boolean value. A value of <code><a>false</a></code> indicates that the @@ -658,13 +637,6 @@ {"tracking": false} </pre> <p> - The following <a>status-object</a> would indicate that the entire - site does not perform tracking. - </p> -<pre class="example"> -{"path": "/", "tracking": false} -</pre> - <p> If <code><a>tracking</a></code> is <code><a>true</a></code>, the <a>status-object</a> MUST include two additional members, named <code><a>received</a></code> and <code><a>response</a></code>, @@ -683,7 +655,9 @@ The <code></a>response</a></code> member MUST have a string value that indicates the status of tracking applicable specifically to this user in light of the received <a>DNT-field-value</a>. - The string value begins with "t" (tracking) or "n" (not tracking) + The string value begins with <code>t</code> (tracking), + <code>n</code> (not tracking), or <code>s</code> (see the more + specific tracking status resource), and MAY be followed by alphanumeric characters that indicate qualifiers for that status. The defined qualifier characters and their meanings are described @@ -697,13 +671,6 @@ those references share the same data controller. </p> <p> - An OPTIONAL member named <code><a>partners</a></code> MAY be - provided with an array value containing a list of - domain names for third-party services that might track the user - as a result of using this site and which do not have the same - data controller as this site. - </p> - <p> An OPTIONAL member named <code><a>policy</a></code> MAY be provided with a string value containing a URI-reference to a human-readable document that describes the tracking policy for @@ -712,22 +679,17 @@ by this machine-readable tracking status representation. </p> <p> - An OPTIONAL member named <code><a>edit</a></code> MAY be - provided with a string value containing a URI-reference to a - resource intended to allow a tracked user agent to review or - delete data collected by this site, if any such data - remains associated with this user agent. The design of such - a resource and the extent to which it can provide access to - that data is beyond the scope of this protocol. - </p> - <p> - An OPTIONAL member named <code><a>options</a></code> MAY be + An OPTIONAL member named <code><a>control</a></code> MAY be provided with a string value containing a URI-reference to a - resource intended to allow a user agent to <q>opt-in</q>, - <q>opt-out</q>, or otherwise modify their consent status - regarding data collection by this site. The design of such - a resource and how it might implement an out-of-band consent - mechanism is beyond the scope of this protocol. + resource for giving the user control over personal data collected + by this site. Such control might include the ability to review + past data collected, delete some or all of the data, provide + additional data (if desired), or <q>opt-in</q>, <q>opt-out</q>, + or otherwise modify an out-of-band consent status regarding + data collection by this site. The design of such a resource, + the extent to which it can provide access to that data, and + how one might implement an out-of-band consent mechanism is + beyond the scope of this protocol. </p> <p> Additional <code><a>extension</a></code> members MAY be provided @@ -745,8 +707,7 @@ "received": "1", "response": "n", "policy": "/privacy.html", - "edit": "/your/data", - "options": "/your/consent" + "control": "/your/data", } </pre> <p class='issue'><a href="http://www.w3.org/2011/tracking-protection/track/issues/47">ISSUE-47</a>: Should the response from the server indicate a policy that describes the DNT practices of the server?<br /> @@ -755,8 +716,8 @@ link to a human-readable policy. </p> <p class='issue'><a href="http://www.w3.org/2011/tracking-protection/track/issues/61">ISSUE-61</a>: A site could publish a list of the other domains that are associated with them<br /> - <b>[PENDING REVIEW]</b> The same-party and partners members provide - a means to list first-party and third-party domains, respectively. + <b>[PENDING REVIEW]</b> The same-party member provides + a means to list the set of same first-party domains. </p> <p class='issue'><a href="http://www.w3.org/2011/tracking-protection/track/issues/124">ISSUE-124</a>: Alternative DNT implementations that replace HTTP headers with something else<br /> <b>[PENDING REVIEW]</b> The tracking status resource minimizes @@ -773,8 +734,9 @@ <p> When present, the tracking status response member's value consists of a string of characters that starts with the tracking - status, signified by <code>t</code> (tracking) or <code>n</code> - (not tracking), and MAY be followed by a set of qualifier + status, signified by <code>t</code> (tracking), <code>n</code> + (not tracking), or <code>s</code> (see the more specific tracking + status resource), and MAY be followed by a set of qualifier characters indicating reasons or limitations applicable to that status. Multiple qualifiers can be provided. </p> @@ -857,7 +819,7 @@ not defined by this specification, and that prior consent overrides the tracking preference expressed by this protocol. When prior consent is indicated, the tracking status object - SHOULD include an <code><a>options</a></code> member that + SHOULD include a <code><a>control</a></code> member that references a resource for modifying this consent. </p> <p> @@ -917,18 +879,6 @@ consider the site to be non-conformant with this protocol. </p> <p> - If the <a>status-object</a> does not have a member named - <code><a>path</a></code> or if the value of - <code><a>path</a></code> is not "/" and not a prefix of the - path component for the URI being checked, then find the - service-specific tracking status resource by taking the template - <q><code>/.well-known/dnt{+pathinfo}</code></q> and replacing - <q><code>{+pathinfo}</code></q> with the path component of the - URI being checked. Perform a retrieval request on the - service-specific tracking status resource and process the result - as described above to obtain the specific tracking status. - </p> - <p> The <a>status-object</a> is supposed to have a member named <code><a>tracking</a></code> with a boolean value. If the value is <q>false</q>, then no tracking is performed for the URI being @@ -948,19 +898,23 @@ <p> If the first character of the <code><a>response</a></code> value is "n", then the origin server claims that it will not track the - user agent for requests on the URI being checked, and for any URIs - with a path prefix matching the <code><a>path</a></code> member's - value, for at least the next 24 hours or until the Cache-Control - information indicates that this response expires, as described - below. + user agent for requests on the URI being checked for at least the + next 24 hours or until the Cache-Control information indicates + that this response expires, as described below. </p> <p> If the first character of the <code><a>response</a></code> value is "t", then the origin server claims that it might track the - user agent for requests on the URI being checked, and for any URIs - with a path prefix matching the <code><a>path</a></code> member's - value, for at least the next 24 hours or until the Cache-Control - information indicates that this response expires. + user agent for requests on the URI being checked for at least the + next 24 hours or until the Cache-Control information indicates + that this response expires. + </p> + <p> + If the first character of the <code><a>response</a></code> value + is "s", then the origin server has multiple tracking status + representations and the specific one applicable to each request + is indicated by a status-id within the Tk field-value of the + corresponding response. </p> <p> The remaining characters of the <code><a>response</a></code> value @@ -1039,20 +993,14 @@ </p> <pre class="abnf"> <dfn>status-object</dfn> = begin-object member-list end-object -<dfn>member-list</dfn> = [ path ns path-v vs ] - tracking ns tracking-v +<dfn>member-list</dfn> = tracking ns tracking-v [ vs received ns received-v ] [ vs response ns response-v ] [ vs same-party ns same-party-v ] - [ vs partners ns partners-v ] [ vs policy ns policy-v ] - [ vs edit ns edit-v ] - [ vs options ns options-v ] + [ vs control ns control-v ] *( vs extension ) -<dfn>path</dfn> = %x22 "path" %x22 -<dfn>path-v</dfn> = string ; URI absolute-path - <dfn>tracking</dfn> = %x22 "tracking" %x22 <dfn>tracking-v</dfn> = true / false @@ -1062,7 +1010,7 @@ <dfn>response</dfn> = %x22 "response" %x22 <dfn>response-v</dfn> = %x22 <a>r-codes</a> %x22 -<dfn>r-codes</dfn> = ("t" / "n") *qualifier +<dfn>r-codes</dfn> = (%x74 / %x6E / %x73) *qualifier <dfn>qualifier</dfn> = "1" ; "1" — first-party / "3" ; "3" — third-party @@ -1075,23 +1023,17 @@ / ext-qualifier <dfn>ext-qualifier</dfn> = %x2D-2E / "0" / "2" / %x34-39 / %x5F - / %x62 / %x64-65 / %x67-6B / %x6D-%x6F - / %x71 / %x73-7A + / %x62 / %x64-65 / %x67-6B / %x6D / %x6F + / %x71 / %x75-7A <dfn>same-party</dfn> = %x22 "same-party" %x22 <dfn>same-party-v</dfn> = array-of-strings -<dfn>partners</dfn> = %x22 "partners" %x22 -<dfn>partners-v</dfn> = array-of-strings - <dfn>policy</dfn> = %x22 "policy" %x22 <dfn>policy-v</dfn> = string ; URI-reference -<dfn>edit</dfn> = %x22 "edit" %x22 -<dfn>edit-v</dfn> = string ; URI-reference - -<dfn>options</dfn> = %x22 "options" %x22 -<dfn>options-v</dfn> = string ; URI-reference +<dfn>control</dfn> = %x22 "control" %x22 +<dfn>control-v</dfn> = string ; URI-reference <dfn>extension</dfn> = object @@ -1124,15 +1066,20 @@ <p> As a supplement to the tracking status resource, the <dfn>Tk</dfn> response header field is defined as an OPTIONAL means for - indicating basic tracking behavior and as a REQUIRED means for + indicating DNT conformance and as a REQUIRED means for indicating that a state-changing request has resulted in an interactive change to the tracking status for this user agent. </p> <pre class="abnf"> <dfn>Tk-field-name</dfn> = "Tk" ; case-insensitive -<dfn>Tk-field-value</dfn> = tracking-false / tracking-true / update-needed -<dfn>tracking-false</dfn> = "0" -<dfn>tracking-true</dfn> = "1" +<dfn>Tk-field-value</dfn> = tracking-design [ ";" status-id ] +<dfn>tracking-design</dfn> = tracking-never + / tracking-first + / tracking-third + / update-needed +<dfn>tracking-never</dfn> = "0" +<dfn>tracking-first</dfn> = "1" +<dfn>tracking-third</dfn> = "3" <dfn>update-needed</dfn> = %x75 ; lowercase "u" </pre> <p class='issue'><a href="http://www.w3.org/2011/tracking-protection/track/issues/107">ISSUE-107</a>: Exact format of the response header?<br /> @@ -1141,12 +1088,23 @@ </section> <section id='Tk-header-use'> - <h4>Indicating Tracking</h4> + <h4>Indicating Tracking Design</h4> <p> + The Tk field-value begins with a single character + <a>tracking-design</a> that indicates how the target resource + conforms to [[!TRACKING-COMPLIANCE]]. We refer to this as the + tracking design because it reflects only how the resource is + designed to work, rather than the current status of tracking + for this requesting user agent or received DNT field-value. + Separating the design and status allows conformance to this + protocol to be indicated without having a negative impact on + caching of responses. + </p> + <p> An origin server MAY send a <a>Tk</a> header field in a response - with a field-value of "0" to indicate that the resource does not - perform tracking as it is defined by [[!TRACKING-COMPLIANCE]]. + with a tracking-design of "0" to indicate that the resource never + performs tracking as it is defined by [[!TRACKING-COMPLIANCE]]. This has the same meaning as <code>{"tracking": "false"}</code> in the tracking status resource. </p> @@ -1155,18 +1113,27 @@ </pre> <p> An origin server MAY send a <a>Tk</a> header field in a response - with a field-value of "1" to indicate that the resource does - perform tracking, though not necessarily for this request, and - claims to conform to applicable tracking compliance requirements. - This has the same meaning as <code>{"tracking": "true"}</code> - in the tracking status resource. + with a tracking-design of "1" to indicate that the resource does + perform tracking (though not necessarily for every request), + conforms to [[!TRACKING-COMPLIANCE]], and considers itself to be + the first-party for this request. </p> <pre class="example"> Tk: 1 </pre> + <p> + An origin server MAY send a <a>Tk</a> header field in a response + with a tracking-design of "3" to indicate that the resource does + perform tracking (though not necessarily for every request), + conforms to [[!TRACKING-COMPLIANCE]], and considers itself to be + a third-party for this request. + </p> + <pre class="example"> +Tk: 3 + </pre> <p class='issue'><a href="http://www.w3.org/2011/tracking-protection/track/issues/120">ISSUE-120</a>: Should the response header be mandatory (MUST) or recommended (SHOULD)</br> - <b>[PENDING REVIEW]</b> The resource is mandatory and the header - field is optional, except for the single MUST case below. + <b>[PENDING REVIEW]</b> The site-wide resource is mandatory; the + header field is optional, except for the single MUST case below. </p> </section> @@ -1178,11 +1145,11 @@ the scope of this specification, that have the effect of asking for and obtaining prior consent for tracking, or for modifying prior indications of consent. For example, the tracking status - resource's status-object defines <code><a>edit</a></code> and - <code><a>options</a></code> members that might be used to refer - to such mechanisms. Although such mechanisms are not defined by - this specification, their presence might influence the tracking - status object's response value. + resource's status-object defines a <code><a>control</a></code> + member that can refer to such a mechanism. Although such + out-of-band mechanisms are not defined by this specification, + their presence might influence the tracking status object's + response value. </p> <p> When an origin server provides a mechanism via HTTP for @@ -1191,13 +1158,38 @@ when a state-changing request has resulted in a change to the tracking status for that server. This indication of an interactive status change is accomplished by sending a - <a>Tk</a> header field in the response with a field-value of + <a>Tk</a> header field in the response with a tracking-design of lowercase "u" (<a>update-needed</a>). </p> <pre class="example"> Tk: u </pre> </section> + + <section id='indicating-status-id'> + <h4>Indicating a Specific Tracking Status Resource</h4> + + <p> + If an origin server has multiple, resource-specific tracking + policies, such that the tracking status might differ depending on + some aspect of the request (e.g., method, target URI, header + fields, data, etc.), the origin server MAY provide an additional + subtree of well-known resources corresponding to each of those + distinct tracking statuses. The OPTIONAL <a>status-id</a> portion + of the Tk field-value indicates which specific tracking + status resource applies to the current request. + </p> + <p> + For example, a response containing + </p> + <pre>Tk: 1;fRx42</pre> + <p> + indicates that the target resource conforms to this protocol as a + first-party and the current tracking status can be obtained by + performing a retrieval request on + </p> + <pre>/.well-known/dnt/fRx42</pre> + </section> </section> <section id='response-error'>
Received on Monday, 21 May 2012 10:11:56 UTC