- 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