跟踪首选项表达式(DNT)

W3C公司工作组说明

此版本:
https://www.w3.org/TR/2019/NOTE-tracking-dnt-20190117/
最新发布版本:
https://www.w3.org/TR/tracking-dnt/
最新编辑稿:
https://w3c.github.io/dnt/drafts/tracking-dnt.html
以前的版本:
https://www.w3.org/TR/2017/CR-tracking-dnt-20171019/
编辑:
罗伊·T·菲尔丁(土砖)
大卫·辛格(苹果)
存储库和参与:
邮件列表存档
提交历史记录
提交错误/问题

摘要

本规范定义了DNT公司请求头字段作为用于表达用户对跟踪的偏好的HTTP机制,HTML DOM属性,使脚本可以读取该表达式,以及允许脚本注册由用户。它还定义了网站沟通以下内容的机制:以及他们如何尊重所接受的偏好,包括检索飞行前跟踪状态的著名资源,用于表示跟踪状态信息的媒体类型,以及塔克用于确认跟踪状态的响应标题字段。

本文件的状态

本节描述了本文档发布时的状态。其他文件可能取代本文件。当前列表W3C公司出版物和本技术报告的最新版本可在W3C公司技术报告索引https://www.w3.org/TR/。

本说明是标准化过程的最终结果已知HTTP扩展的跟踪保护工作组不同于DNT、Do Not Track或Tracking Protection Expression。

自上一次作为候选人推荐发表以来已充分部署这些扩展(定义)以证明进一步推进,也没有计划支持的迹象在用户代理、第三方和整个生态系统之间因此,工作组决定结束其工作并重新出版最终产品作为本注释,任何未来的附录单独发布。

本文件由发布这个跟踪保护工作组作为一个工作组说明。

欢迎对本文件提出意见。请将它们发送到GitHub存储库public-tracking@w3.org(档案).

发布为工作组说明并不意味着W3C公司会员。这是最终文件,可以随时更换。引用这个是不合适的作为最终注释以外的文件,以及任何未来的附录单独发布。

本文件由一群人W3C公司专利政策.

本文件受2018年2月1日W3C公司工艺文件.

1介绍

万维网由数十亿相互连接的资源组成通过使用超文本。超文本提供了一个简单的、面向页面的查看这些资源提供的信息,可以是通过选择链接、操作控件和提供数据进行遍历通过表单和搜索对话框。

网页通常由许多信息源组成初始资源请求,包括对样式表的嵌入引用,内联图像、javascript和其他可能作为渲染或行为的一部分自动请求为该页定义的处理。用户体验是无缝的,即使页面是由许多网络的结果组成的与多个服务器的交互。从用户的角度来看只需访问一个网站并与之交互:所有用于编写页面的技术细节和协议机制表示网站隐藏在幕后。

网站所有者经常收集有关其网站使用情况的数据各种各样的目的,包括导致用户访问网站的原因(推荐),用户体验在场地(网站分析)以及使用场地(观众细分).在某些情况下,收集的数据用于动态调整内容(个性化)或向用户提供广告(定向广告). 数据收集通常通过以下方式进行在每个页面上插入嵌入元素,导致跨多个页面连接用户活动的数据。关于这些技术及其对隐私的影响可以在[了解隐私].

用户需要一种机制来表达自己对以下方面的偏好跟踪配置简单,在以下情况下效率高已实施。然而,仅仅表达偏好并不意味着所有收件人都会遵守。在某些情况下,服务器可能依赖于在某些形式的跟踪上,不愿意或无法关闭。在其他情况下,服务器可能只执行有限形式的跟踪这对大多数用户来说都是可以接受的。因此,服务器需要通信自身跟踪行为的机制,请求同意,并存储用户粒度异常一旦用户拥有做出了明智的选择。

该规范扩展了超文本传输协议(HTTP)语义[RFC7231协议]传达用户的跟踪偏好(如果有),以及源服务器的跟踪行为。这个DNT公司请求标头字段定义用于传达用户对目标资源。的已知URI跟踪状态资源塔克响应标头字段定义用于通信服务器的跟踪行为。此外,JavaScript API定义用于使脚本能够确定DNT状态并注册用户粒度例外。

本规范未定义收件人的要求需要遵守用户表达的跟踪偏好,但传达此类合规性的方式除外。相反,跟踪状态提供了识别一组符合性的能力服务器声称遵守的制度,假设为每个制度都定义了自己对合规行为的要求。例如[TCS(牵引力控制系统)]是一个以工作为目的的进步,旨在定义这样一个合规制度。

2术语

2.1超文本传输协议

以下术语按HTTP/1.1语法定义使用[RFC7230协议]和语义[RFC7231协议]:客户,服务器,源服务器,用户代理,发件人,收件人,请求,响应,消息,中介的,代理,隐藏物,乌里霍斯特,权威,标题字段,目标资源,资源、和表示.

2.2HTML格式

以下术语按HTML定义使用[HTML51标准]:活动文档,文档.域,有效脚本来源,责任文件,浏览上下文,嵌套浏览上下文、和顶级浏览上下文.

2.3活动

跟踪是关于特定用户跨多个不同上下文的活动和保留,使用或共享从该活动派生的数据它发生的上下文。A类上下文是由控制的一组资源同一方或由一组各方共同控制。

A类网络交互是单个HTTP请求相应响应:零个或多个临时(1xx)响应,以及单个最终(2xx-5xx)响应。

A类用户操作是用户通过配置、调用或选择,以启动网络互动。选择链接、提交表单和重新加载页面是用户操作的示例。用户活动是任何一组此类用户操作。

2.4参与者

A类用户是一个正在制造或已经制造,使用Web。

A类聚会是一个自然人、一个法律实体或一套共享共同所有人、共同控制人和用户很容易发现的组标识。通用品牌推广或提供可通过一方描述DNT实践的资源链接提供这种可发现性的方法示例。

对于给定的用户操作第一方是用户打算通过一个或多个与之交互的一方网络交互,作为该操作的结果。仅限于悬停、静音、暂停或关闭给定内容不构成用户与另一方交互的意图。

在某些情况下,Web上的资源将由两个或多个不同的当事人。每一方都被视为第一方,如果用户合理期望与当访问该资源时,它们都会出现。例如,突出资源上的联合品牌可能会导致用户期望多方负责内容或功能。

对于通过一个或多个网络收集的任何数据用户操作产生的交互,第三方除该用户之外的任何一方该用户操作的一方,或代表该用户操作的服务提供商用户或第一方。

访问Web资源通常涉及多方处理网络交互中接收到的数据。例如,域名服务、网络接入点、内容分发网络、负载平衡服务、安全过滤器、云平台和软件即服务提供商可能是给定的网络交互,因为它们由用户或资源所有者为提供机制沟通。同样,在网络交互,例如使用服务或承包商时执行专门的数据分析或记录保留。

对于给定网络交互中接收的数据服务提供商被视为与它的签约人如果服务提供商:

  1. 代表发包人处理数据;
  2. 确保数据仅作为发包人指示;
  3. 除了在永久取消身份表格(例如,用于监控服务完整性、负载平衡、容量规划或账单);和,
  4. 与发包人签订了一致的合同具有上述限制。

2.5数据

聚会收集网络交互中接收的数据如果该数据在网络之后仍在该方的控制范围内交互完成。

聚会使用如果一方处理任何存储或仅将其转发给另一方以外的目的。

聚会分享数据,如果它传输或提供将数据发送给任何其他方。

数据是永久取消身份当存在高度自信,没有数据的人类主体可以直接或间接识别(例如,通过与标识符、用户代理或设备)与其他保留或可用信息相结合。

三。符号约定

3.1要求

关键词必须,不能,必需的,应该,不应该,推荐,可以、和可选择的在这个规范应按照[RFC2119协议].

3.2形式语法

本规范使用增强巴克斯-诺尔形式(ABNF)符号[RFC5234号文件]定义网络协议语法和网络IDL[网络IDL-20161215]定义脚本API。关于错误处理的一致性标准和注意事项如下定义见第2.5节[RFC7230协议].

如何DOM异常例外名为“无效状态错误”、“安全错误”和“语法错误”的是定义于[网络IDL-20161215].

Promise对象定义于[ECMASCRIPT公司];短语承诺电话,解决承诺,拒绝承诺,履行后、和拒绝时根据[承诺指南].

4确定用户首选项

该协议的目标是允许用户表达其关于跟踪每个服务器的个人偏好,以及他们通过HTTP进行通信的web应用程序,从而允许该偏好的接收者可以相应地调整跟踪行为或与用户达成满足所有要求的单独协议各方。

表达这个概念的关键是发送的信号必须反映用户的偏好,而不是某些供应商、机构的选择,站点或用户控制之外的网络组合机制;这同样适用于一般优惠和例外。基本原理是跟踪偏好表达式当它反映用户的故意选择时发送。没有用户选择,没有表示跟踪偏好(请参见部分10.1 为什么默认情况下未预配置DNT:1).

用户代理必须为用户提供至少两种选择对于请勿跟踪首选项:未设置DNT:1个.用户代理5月提供第三种选择:请勿打扰:0.

如果用户的选择是DNT:1个请勿打扰:0,的跟踪首选项为启用; 否则跟踪首选项为未启用.

用户代理必须默认跟踪首选项为未设置(未启用),除非有特定的跟踪首选项由用户使用该代理的决定暗示。例如,使用通用浏览器并不意味着有跟踪偏好当正常调用为超级弗雷德,但可能意味着首选项(如果调用为)超级无轨超级特权弗雷德.

不受用户控制的HTTP实现不能添加、删除或修改跟踪首选项。一些受控网络环境,如公共访问终端或管理的公司内部网可能会施加限制关于已安装用户代理的使用或配置,例如用户可能只能使用预先确定的已启用首选项。但是,如果用户将其通过无线互联网将自己的网络设备连接到图书馆或咖啡馆访问,期望他们选择的用户代理和个人对网站行为的偏好不会被网络环境改变(除了全面的限制通过该网络可以访问或无法访问哪些资源)。

HTTP中介不能添加、删除或修改跟踪通过该中介转发的请求中的首选项表达式除非已经专门安装或配置了中介由发出请求的用户执行此操作。例如,互联网服务提供商不能注入DNT:1个代表所有没有表达偏好的用户。

用户代理通常包括用户可安装的扩展,还称为附加组件插件,这是能够修改配置和发出网络请求。发件人从用户的角度来看,这些扩展被视为用户代理,应该尊重用户对跟踪的配置偏爱。用户代理作为一个整体负责确保尽可能遵守本协议,这意味着用户代理核心和每个扩展共同负责一致性。然而,没有单一的扩展标准接口。允许此类扩展的用户代理应该提供用于确定用户的扩展的适当机制跟踪偏好。

用户代理扩展不能更改跟踪首选项表达式或其相关配置,除非安装和启用该扩展是用户的跟踪首选项,或扩展本身符合该协议对用户代理提出了所有要求。

同样,用户代理之外的软件可能会过滤网络流量或导致用户代理的配置更改。更改用户代理配置的软件必须坚持用户代理扩展的上述要求。过滤软件网络流量必须在HTTP上遵守上述要求中介的。

除了上述要求外,我们没有具体说明跟踪向用户提供首选项选择或首选项是如何提供的enabled:每个实现负责确定用户跟踪偏好的经验启用.

例如,用户可以在其用户代理的配置,安装一个特定于旨在添加跟踪首选项表达式,或者选择隐式包含跟踪偏好(例如。,隐私设置:高).用户代理可能会在启动期间询问用户的偏好,可能在首次使用时或更新后添加跟踪保护功能。同样,用户可以安装或配置要添加的代理他们自己发出的请求的表达式。

5表达跟踪首选项

5.1表达式格式

当用户有启用跟踪偏好需要对所有可能执行或发起跟踪.

什么时候?启用,跟踪首选项表示为:

脱氧核糖核酸 意思
1 此用户不希望被跟踪此请求。
0 此用户倾向于允许跟踪此请求。

用户代理不能发送跟踪首选项表达式,如果跟踪首选项是未启用。这意味着不针对以下每种情况发送表达式:

在没有法规、法律或其他要求的情况下,服务器5月将缺乏明确的跟踪偏好解释为找到最适合给定用户的,尤其是在根据用户的隐私期望和文化考虑情况。同样,服务器可能会利用其他首选项本协议范围之外的信息,例如特定站点的用户首选项或第三方注册服务,在没有明确偏好时通知或调整他们的行为通过该协议表达。

5.2HTTP请求的DNT标头字段

这个DNT公司头字段是一种表示用户在HTTP请求中的跟踪首选项([RFC7230协议]).最多一个DNT公司有效请求中可以存在标头字段。

DNT-field-name=“DNT”DNT字段值=(“0”/“1”)*DNT扩展

用户代理不能生成DNT公司标题字段,如果用户的跟踪首选项是未启用.

用户代理必须生成DNT公司带有的标头字段字段值,如果用户的跟踪首选项为启用,他们的偏好是DNT:1个,并且没有为目标资源(请参见部分6 用户授予的例外).

用户代理必须生成DNT公司带有字段值,如果用户的跟踪首选项为启用他们的偏好是DNT:0,或者如果已为授予异常目标资源。

代理人不能生成DNT公司标题字段,除非它有由用户专门安装或配置提出请求并遵守上述要求是用户代理。

GET(获取) /某物/这里HTTP/1.1协议主机:example.comDNT公司: 1

5.2.1DNT字段值的扩展

的剩余部分DNT公司字段值,在初始字符之后,为将来的扩展保留。DNT扩展只能是当跟踪偏好为启用.扩展语法仅限于以下可见ASCII字符:可以在HTTP中解析为单个单词,并安全嵌入JSON字符串,无需进一步编码(部分7.5 跟踪状态表示).

DNT扩展=%x21/%x23-2B/%x2D-5B/%x5D-7E; 不包括CTL、SP、DQUOTE、逗号、反斜杠

例如,其他字符可能表示主首选项由第一个数字表示,例如主如果收件人不理解,则可以理解其偏好扩展。因此,可以认为字段值为“1xyz”作为不跟踪,但如果您了解定义的细化按x、y或z,然后根据这些调整我的偏好改进。

不实现DNT扩展的用户代理不能发送中的DNT扩展字符DNT公司字段值。未实现DNT扩展的服务器应该忽视第一个字符以外的任何内容。

注释

此DNT扩展功能是推测性的,因为未知已定义扩展;没有阅读此内容的实现者规范可能会假设DNT只有固定值“0”或“1”。此外,潜在的好处鉴于扩展信息,这种机制的可以使用单独的请求头字段提供。对“1”值的扩展不当可能会导致用户请求更容易指纹.

5.3检测首选项的JavaScript属性

这个导航器.doNotTrack属性启用具有对导航器对象[HTML51标准]确定什么DNT公司标题字段值应为发送到有效脚本来源,考虑到用户的一般偏好(如果有)和用户粒度异常适用于目标域当被引用时活动文档的顶级浏览上下文.

部分界面导航器{只读属性 DOMString(DOM字符串)? doNotTrack(未跟踪);};

该值为无效如果没有DNT标题字段发送(例如,因为跟踪首选项是未启用并且没有用户授予的例外是适用的);否则,该值是以“0”或“1”开头的字符串,后面可能是DNT扩展字符。

具体来说导航器.doNotTrack对于给定的脚本可以是无效或字符串值发送到DNT公司字段值(部分5.2 HTTP请求的DNT标头字段)在向目标资源有效脚本来源(当前文档.域属于脚本的责任文件)当该请求到期时来自此网站的嵌入引用(文档.域属于这个顶级浏览上下文活动文档).

理想情况下导航器.doNotTrack应该反思属性被读取。然而,在实践中,该值可能只反映启动脚本时生效的值。

5.4跟踪其他协议中表示的首选项

用户的跟踪偏好通常适用,而与用于互联网通信的协议无关。然而,定义如何用户的跟踪偏好可以通过协议进行通信HTTP除外。

6用户授权的例外

6.1概述

内容提供商可能希望提示访问者选择加入行为广告或类似目的的跟踪到达时启用了“请勿跟踪”设置。然而,授予一种情况下的例外(例如,浏览新闻网站时)不会暗示例外适用于其他上下文(例如,浏览无关的医疗场所)。此外,用户可能希望查看或在单个一致用户中编辑他们授予的所有异常界面,而不是以不同的方式管理首选项每个内容提供商或跟踪器的隐私页面。

A类用户粒度异常是一项决定的记录用户同意跟踪(请勿打扰:0)关于未来从给定站点到一组目标域的请求。站点和目标的作用域与现有的类似cookie的域范围(第5.3.1节第页,共页[HTML51标准]),以避免提示用户输入站点和可能引用的每个目标资源。

客户端数据库可用于持久存储用户粒度异常,例如发送权限请勿打扰:0由站点获取并通过JavaScript API存储。然而,我们仅定义API(如下);存储机制的选择留下了每个实现。与使用cookie进行管理相比同意、例外数据库和API提供了更高的透明度和更好的用户控制,同时提供更好的持久性网站例外。

6.2站点特定或网络范围

涉及三个领域概念在处理用户粒度异常时:

站点域
与给定引用所在的站点关联的域可能会找到,并且用户粒度可能会查询异常API:特别是当前文档.域顶级浏览上下文活动文档[HTML51标准].
目标域
这个乌里霍斯特的子组件权威成分引用的“http”或“https”URI的[RFC7230协议].
脚本域
脚本使用异常API时的有效域:具体来说,电流文档.域脚本的责任文件[HTML51标准].

用户粒度异常是特定场地的如果出现异常仅限于嵌入给定站点域; 否则,异常为网络范围因为它适用于目标域,而不考虑引用现场。例如,用户可能希望授予某个目标域一个网络范围的例外,用于跨多个站点,也许是为了换取一些奖励。

当请求同意记录特定场地的例外,网站可能会对操作和其引用的已知第三方的行为。这样的网站可能希望限制其特定场地的仅的例外这些声明已被验证的目标域。(例如,考虑一个受信任的网站的困境广告商和分析提供商,以及一些不太受信任的可能引用其他网站的混搭内容)。因此,特定场地的异常可以限制在脚本域中,限于指定的目标域集,或适用于任何目标域(“*”)。

6.3授予例外

预计网站将在其在线上向用户解释内容、例外的必要性以及授予或否认这一例外。在收到来自用户,希望在站点页面上操作的脚本承诺致电导航器.storeTrackingExceptionAPI使用与用户同意一致的参数。

一个网站必须确保存储异常的调用反映用户在调用时授予异常的意图。现场全权负责确定记录例外情况,以反映用户在通话时间。

可能希望接收用户粒度的第三方目标域异常通常无法调用交互式页面上的JavaScript显示(例如,仅提供图像或“跟踪像素”)。他们不能在下请求例外这些情况,或者是因为需要脚本来API调用或需要交互以确保通知用户并获得他们的同意。一般来说通知、获得同意和调用API的过程不是预期在调用此类跟踪器的页面元素中。

第一方网站的页面(顶级浏览上下文)可能用于获得多人的同意各方;例如,使用包含脚本的多个iframe元素传达有关各方政策的信息并获取具体信息各方同意。在这种情况下有效脚本来源可能与授予许可的网站不同。

或者,第三方可以鼓励用户访问他们的直接拥有网站,以便参与同意对话并使用用于存储网络范围例外。

即使用户的一般偏好是未启用。这允许发送DNT公司仅适用于目标资源需要首选项。存储的异常可能会影响如果用户稍后选择配置常规跟踪首选项。

用户代理可能不会立即存储异常,可能因为它允许用户进行确认。尽管网站已经在调用商店API之前获得用户的知情同意,用户可能会改变主意,允许存储异常以继续,但稍后将其删除,或者通过先前的配置拒绝存储。尽管如此,在呼叫时,该网站已获得用户的同意,无论用户代理存储了一个异常。

6.4检查异常

网站可以承诺呼叫导航器跟踪异常存在API查询一系列例外情况是否已获得批准并有效在用户代理中。如果承诺变为虚假(表明异常集已过期、已删除或尚未存储),可以再次请求用户同意。

用户代理应在请求的时间,以确定要发送的值(如果有)作为用户的跟踪偏好。

如果A与X匹配,B与Y匹配,则一对duplet[A,B]和[X,Y]匹配。一对值A和X匹配的条件是且仅当下列条件之一为真:

例如,用户可能会为metrics.example.net授予异常在news.example.com和weather.example.com上跟踪他们的活动,但不在medical.example.org上。如果文档位于http://news.example.com/news/story/2098373.html已嵌入对的引用http://metrics.example.net/1x1.gifhttp://weather.example.com/widget.js,的这些引用的站点域为新闻.example.com目标域是metrics.example.net(度量.example.net)weather.example.com网站分别是。

用户代理5月在以下情况下选择忽略用户粒度异常这个目标资源没有相应的跟踪具有有效跟踪状态表示的状态资源,因为这意味着目标资源与此不符规范。

6.5撤销例外

存储异常的站点也应启用吊销这些例外情况。这个导航器.removeTrackingException美国石油学会可以通过脚本承诺调用以删除所有适用的异常到该站点。

一个网站5月监视其用户粒度异常的更改。如果用户通过删除例外来撤销同意,则站点必须尊重这一撤销,尽管它5月再次要求一个新的例外。换句话说,一个站点不能恢复已删除的未首先与新的交互并接收新的用户同意。

6.6客户端脚本API

6.6.1用于存储跟踪异常的API

当现场获得许可用户粒度异常,在活动浏览上下文嵌套浏览上下文站点可以承诺电话 导航程序.storeTrackingException存储一个或多个跟踪异常。A类跟踪ExData对象是作为参数提供,用于定义异常的范围([site,target]包含授予的异常的duplet)以及为该异常存储的可选信息。调用返回一个承诺,该承诺或解析为跟踪ExResult或被拒绝DOM异常确定失败的原因。

部分接口导航器{
    承诺<跟踪ExResult> storeTrackingException(存储跟踪异常)(
      跟踪ExData 属性);};词典跟踪ExData{
   DOMString(DOM字符串)? 网站;
   序列<DOMString(DOM字符串)>? 目标;
   DOMString(DOM字符串)? 名称;
   DOMString(DOM字符串)? 解释;
   DOMString(DOM字符串)? 细节;
   长的?      maxAge(最大年龄);};词典跟踪ExResult{
  布尔值 是站点范围;};

导航器.storeTrackingException传递一个跟踪ExData对象。用户代理必须忽略未知的属性跟踪ExData对象(用于将来可扩展性)。以下内容可选属性定义如下:

网站
例外适用的引用域范围:
  • 如果网站未定义、null或空字符串,异常引用域范围默认为脚本域.
  • 如果网站定义并等于“*“,例外是打算网络范围对于目标.用户代理必须拒绝承诺DOM异常如果两者都是,则命名为“SecurityError”网站任何目标是“*".
  • 否则,将定义异常的引用域范围按找到的域在里面网站以与域参数相同的方式处理饼干[RFC6265协议],允许包含子域前缀“*.“.价值可以设置为文档主机名,最多比TLD低一级。
目标
适用异常的目标域数组:
  • 如果目标未定义或为空,则用户粒度要存储的异常是[站点,*],表示该例外适用于现场。
  • 如果目标是空数组,要存储的用户粒度异常为[站点,脚本域],意思是例外情况仅适用于共享相同资源的资源域作为有效脚本来源.
  • 否则,对于目标数组中,要存储的用户粒度异常是duplet[站点,域].
名称
定义且不为null或空字符串时,名称是一个用于命名异常的用户可读字符串,通常对目标或其预期目的的描述站点,编码为UTF-8,适合自然语言用于告知例外情况的同意。
解释
定义且不为null或空字符串时,解释是一个授予异常的用户可读简短解释,编码为UTF-8并使用相同的自然语言用于告知例外情况的同意。
细节
定义且不为null或空字符串时,细节是URI关于授予的进一步信息的参考可以找到异常[RFC3986协议].
maxAge(最大年龄)
定义且不为空时,maxAge(最大年龄)是积极的指示授予最长生存期的秒数:
  • 如果maxAge(最大年龄)提供且不为null、空或否定,用户代理必须删除存储的异常不晚于指定的秒数存储。
  • 如果maxAge(最大年龄)未提供,则用户代理5月无限期保留存储的授权。

属性名称,解释、和细节潜在用户界面的调用方。如果用户代理向用户显示这些属性,它应该要清楚,它们是为了提供信息价值而提供的不如异常的技术效果重要。

除上述数据外,用户代理还可以存储有关调用的环境信息,例如关联的URI使用顶级浏览上下文,这个有效脚本来源、当前时间戳或其他可能从适用的跟踪状态中获得的信息资源。

呼叫脚本域 必须有一个站点范围的跟踪状态资源带有有效的跟踪状态表示包括一个政策属性。这允许用户代理获取并可能存储额外的有关呼叫者控制器和跟踪的信息授予异常时的策略。

用户代理5月用一个DOM异常如果无法确定有效脚本来源或者如果与之对应的站点原点没有站点范围的跟踪状态资源带有有效的跟踪状态表示.

对于每个特定场地的存储异常,用户代理不能存储duplet和必须拒绝用一个DOM异常命名为“SecurityError”如果脚本无法在这个duplet上设置cookie按照cookie域规则引用域范围[RFC6265协议].

例如,上的脚本网址:www.foo.bar.example.com可以设置这个网站作为“bar.example.com”“example.com”,但不是为了“something.else.example.com”“com”.

对于每个网络范围正在存储异常,用户代理不能存储duplet和必须拒绝用一个DOM异常命名为“SecurityError”如果脚本无法在该目标上设置cookie遵循cookie域规则的域[RFC6265协议].这限制了对共享脚本的web范围异常的存储与异常目标相同的域范围,但允许这样要嵌入公共同意门户的iframe中的脚本。

对于任何其他故障,例如中格式不正确的参数这个跟踪ExData,用户代理不能商店数据库中的任何目标duplet和必须拒绝承诺用一个DOM异常名为“SyntaxError”。

完成后,用户代理已将添加到其本地数据库一个或多个站点对双工器[站点,目标],每个表明该请求站点域目标域将包括请勿打扰:0无论用户的一般跟踪偏好。已实现的承诺对象包含以下内容跟踪ExResult属性:

是站点范围
真的如果用户代理存储了适用于所有域的更广泛的例外(而不仅仅是列出的目标);否则,.

目标提供用于特定场地的例外,用户代理5月忽略该列表,选择存储a特定场地的所有域的例外([站点,*]),如果它还通过设置返回的承诺是站点范围财产真的.

用户代理5月实例化导航器.storeTrackingException即使在导航器.doNotTrack为null。脚本应该测试为了…的存在导航器.storeTrackingException之前调用方法。

注释

这里有一些关于脚本和有效脚本来源匹配一个站点能够将资源收到的DNT值保存在其他(目标)站点。特别是,此功能可能被滥用设置/取消设置异常数组,类似于位值数组,并通过将请求嵌入到这些域(可能都指向同一个Internet主机)。然而,我们预计这将在与其他指纹来源不同的是,用户代理。

同样,允许将异常存储在另一个网站的页面可能会被滥用,除非打电话脚本确保它在预期的页面中运行收集用户同意书以及该同意书的背景与存储的异常一致。

这种设计符合这样一个事实,即没有技术在未获得用户的知情同意。我们假设监管环境足以惩罚可能滥用API或滥用存储范围的人员例外情况。用户代理可以通过检查进一步限制此类风险对于站点范围的跟踪状态资源当它出现时API要求。

6.6.2用于删除跟踪异常的API

当站点决定或被用户指示撤销用户粒度异常,在活动浏览上下文嵌套浏览上下文站点可以承诺电话 导航器.removeTrackingException删除一个或多个跟踪异常。A类跟踪ExData对象作为参数来标识要删除的异常。调用返回一个承诺,该承诺或解析为表示成功或被拒绝DOM异常确定失败的原因。

部分接口导航器{
  承诺<无效> 删除跟踪异常(
    跟踪ExData 属性);};

导航器.removeTrackingException通过跟踪ExData对象。用户代理必须忽略未知的属性跟踪ExData对象(用于将来可扩展性)。以下内容可选属性定义如下:

网站
例外适用的引用域范围:
  • 如果网站未定义、null或空字符串、异常将域范围默认值引用到脚本域.所有与该域匹配的存储异常,无论目标,将被移除。
  • 如果网站定义并等于“*“,例外是删除了个网络范围并由一组目标.
  • 否则,要删除的异常由在中找到域网站以与域参数相同的方式处理饼干[RFC6265协议],允许包含子域前缀“*.“。所有存储的异常匹配无论目标是什么,都要删除该域范围。
目标
适用异常的目标域数组:
  • 如果网站不是定义或不等于“*“,那么目标被忽略(它仅用于删除web范围的异常)。
  • 如果目标是一个空数组网络范围要删除的异常是替身[*,脚本域].
  • 否则,对于目标数组,万维网范围要删除的例外是duplet[*,域].

对于每个特定场地的正在删除异常,用户代理不能移除duplet并必须拒绝承诺DOM异常命名为“SecurityError”如果脚本无法在这个duplet上设置cookie按照cookie域规则引用域范围[RFC6265协议].

对于每个网络范围正在删除异常,用户代理不能移除duplet并必须拒绝用一个DOM异常命名为“SecurityError”如果脚本无法在该目标上设置cookie遵循cookie域规则的域[RFC6265协议].

任何处理失败,例如格式不正确的参数在中跟踪ExData,将不会产生重复从存储的拨款和返回的承诺被拒绝DOM异常名为“语法错误”。

如果存储的数据库中没有匹配的双工器在调用方法时授予,此操作不执行任何操作而不是解决承诺。

完成后,用户代理必须已删除任何存储了与识别的duplet匹配的异常。

6.6.3确认跟踪异常的API

当站点希望确认用户粒度异常存在于可能由其引用的一组目标域站点中运行的脚本浏览上下文嵌套浏览上下文该站点的承诺电话 导航器跟踪异常存在用一个跟踪ExData对象作为标识要确认的异常集。调用返回的承诺要么解析为true,要么false或被拒绝DOM异常确定失败的原因。

部分接口导航器{
  承诺<布尔值> 跟踪异常存在(
    跟踪ExData 属性);};

导航器跟踪异常存在传递一个跟踪ExData对象。用户代理必须忽略未知的属性跟踪ExData对象(用于将来可扩展性)。以下内容可选属性定义如下:

网站
异常适用的引用域范围:
  • 如果网站未定义、null或空字符串、异常集待确认的引用域范围等于脚本域.
  • 如果网站定义并等于“*“,异常集有待确认的是万维网范围对于一组目标.
  • 否则,要确认的异常集具有引用与找到的字符串匹配的域范围在里面网站,这是以与域参数相同的方式处理饼干[RFC6265协议],允许包含子域前缀“*.".
目标
适用异常的目标域数组:
  • 如果目标未定义或为null,则用户粒度异常为已确认[站点,*],意味着例外适用于站点引用的所有域。
  • 如果目标是一个空数组,需要确认用户粒度异常[站点,脚本域],意思是例外情况仅适用于共享相同资源的资源域作为有效脚本来源.
  • 否则,对于目标数组中,需要确认的用户粒度异常是双面打印[站点,域].

对于每个特定场地的正在确认异常,用户代理必须拒绝用一个DOM异常命名为“SecurityError”如果脚本无法在这个duplet上设置cookie按照cookie域规则引用域范围[RFC6265型].

对于每个网络范围正在确认异常,用户代理必须拒绝用一个DOM异常命名为“SecurityError”如果脚本无法在该目标上设置cookie遵循cookie域规则的域[RFC6265协议].

任何处理失败,例如格式不正确的参数在中跟踪ExData,将导致返回的承诺被拒绝DOM异常名为“语法错误”。

用户代理必须以价值实现诺言真的如果当前(非过期)匹配异常存在于上述所有duplet中,或如果任何已识别的duplet没有匹配异常。

因为数据库可能随时更改(通过其他窗口或其他用户界面),对API的特定响应可能只有在履行承诺时才是准确的。

6.7用户代理例外管理

关于授予例外;用户代理5月选择不提供。或者,用户代理5月:

当通过API提供目标域的显式列表时,他们的名字对用户来说可能没有什么意义。用户可能会,因为例如,被告知存在特定的存储异常在此类站点上设置目标,而不是按名称列出;或者用户代理可能决定存储所有目标异常,实际上忽略任何目标列表。

相反,如果目标使用了通配符,则用户可能会告知所有第三方存在存储的异常由指定的站点嵌入。

当跟踪异常时选择高亮显示的用户代理applicable可能提供一个界面,例如状态栏,可以将用户定向到有关异常以及如何撤销它。

在某些用户代理实现中,授予异常的决策可能是过去制作的(后来被遗忘了),也可能是由设备的其他用户制作。因此,例外情况可能不会始终表示用户的当前首选项。某些用户代理可能会选择提供用户选择的环境通知正在进行跟踪,或者可以轻松访问以查看和控制这些偏好。用户可能还希望在独立的用户界面,允许用户修改存储异常而不访问目标站点。

用户代理必须处理存储在单个storeTrackingException作为“单元”调用,授予和完整地维护duplet,或者根本不维护。用户代理不能向站点表明它已存储数据库中目标{a、b、c}的异常,稍后删除只有{a,b,c}中的一个或两个来自其存储的逻辑数据库赠款。这确保了站点所需的目标域集操作完整性被视为一个单元。

7传达跟踪状态

7.1概述

除了表达用户对跟踪的偏好外,此协议使服务器能够传递机器可读的声明关于他们自己的跟踪行为。自从个性化跟踪每个响应的状态都将禁用缓存响应机制的定义允许跟踪状态在提出可追踪的请求之前进行沟通,但未提出每个响应动态。

7.2跟踪状态值

7.2.1定义

A类跟踪状态值(TSV公司)是单身字符对用户跟踪偏好的响应通过指定资源.对于站点范围的跟踪状态资源,指定的资源是同一源服务器上的任何资源。对于塔克响应标头字段目标资源相应的请求是指定的资源,并且仍然是这样用于任何后续特定于请求的跟踪状态资源由Tk字段值引用。

按照正式定义,跟踪状态值区分大小写由以下ABNF提供。

TSV=%x21;“!”-施工中/%x3F;“?”-动态/%x47;“G”-多方网关/%x4E;“N”-不跟踪/%x54;“T”-跟踪/%x43;“C”-同意跟踪/%x50;“P”-仅在同意的情况下跟踪/%x44;“D”-忽略DNT/%x55;“U”-更新/TSV扩展

7.2.2施工中(!)

跟踪状态值为!意味着来源服务器当前正在测试跟踪状态的通信。这个!为简化测试和在生产系统上部署测试合规性以及在未来的调整期内协议变更或改变监管限制。请注意此值并不表示用户的首选项是忽略,也不会因访问而进行跟踪指定的资源。

7.2.3动态(?)

跟踪状态值为?表示源服务器通常需要更多信息来确定跟踪状态因为指定资源动态调整基于请求中信息的行为。

如果?处于站点范围跟踪状态,原始服务器必须发送塔克全部标题字段对指定资源上的请求的响应。如果?存在于塔克标题字段,更多信息将在特定请求中提供跟踪由引用的状态资源状态id.源服务器不能发送?作为跟踪表示中的状态值特定于请求的跟踪状态资源。

7.2.4网关(G)

跟踪状态值为G公司指服务器充当涉及多方的交换的网关。如果对指定资源包括自动选择过程,如动态投标,被选中的一方确定请求数据的方式将根据明确的跟踪偏好进行处理。类似于?G公司TSV公司表示实际跟踪状态是动态的在响应消息的塔克标题字段,可能使用从选定方转发的信息。

此跟踪状态值仅作为站点范围的状态有效。服务器不能发送G公司作为跟踪中的状态值塔克标题字段或特定于请求的跟踪状态资源的表示。

如果G公司处于站点范围跟踪状态:

  • 网关必须在其站点范围内发送链接跟踪隐私策略的状态表示解释对以下各方的限制可能通过该网关接收数据;
  • 网关必须转发任何明确的跟踪请求中对接收数据的每一方的偏好根据该请求;
  • 网关必须与每个向其提供请求数据的各方允许所选参与方保留来自具有明确跟踪偏好的请求DNT:1个; 和,
  • 网关必须发送塔克中的标题字段对指定资源请求的响应,包括在该字段的值a内状态id特定于选定的一方,以便有关可以通过特定于请求的跟踪状态资源(请参阅部分7.4.2 特定于请求的跟踪状态).

关于网关本身执行的跟踪G公司响应可视为等效T型(跟踪)响应定义如下。站点范围跟踪状态中的其他信息表示指示网关打算如何遵守除了潜在的网关进程隐含的数据共享。

7.2.5不跟踪(N)

跟踪状态值为N个表示源服务器声称通过指定资源不用于跟踪,也不会与中的其他数据组合可以进行跟踪的表单。

7.2.6跟踪(T)

跟踪状态值为T型表示源服务器可以使用通过指定资源.跟踪中提供的信息状态表示可以指示这种跟踪是否限于一组普遍接受的用途或坚持一种或更多合规制度。

跟踪状态值为C类意味着来源服务器认为其已获得跟踪此内容的事先同意用户、用户代理或设备,可能通过某种机制由本规范定义,且事先同意优先该协议表示的跟踪偏好。发送C类跟踪状态的值指定资源 必须提供参考用于控制配置其对应跟踪状态表示的性质(部分7.5 跟踪状态表示).

跟踪状态值为P(P)意味着来源服务器实时不知道是否已收到同意跟踪此用户、用户代理或设备,但承诺不使用或共享任何DNT:1个数据直到此类同意被确定,并进一步承诺删除或永久取消标识四十八小时内DNT:1个数据已收到,但尚未收到此类同意。

由于此状态值本身并不指示跟踪特定请求,发送P(P)跟踪状态值必须提供配置相应跟踪中的属性链接到资源以获取的状态表示同意状态。

这个P(P)跟踪状态值专门用于在观众调查系统中确定同意由于遗留系统的原因,请求的时间要么不切实际无法跟上网络流量,或可能“被游戏化”由第一方网站决定是否可以确定其用户已同意。数据不能用于个性化。如果可以在请求C类优选跟踪状态。

7.2.9忽视(D)

跟踪状态值为D类意味着来源服务器无法或不愿意遵守跟踪首选项从请求用户代理收到。源服务器发送D类跟踪状态值必须内的详细信息服务器的相应隐私策略条件跟踪首选项可能被忽略。

例如,源服务器可能会忽略DNT字段从特定用户代理(或通过特定网络)接收中介机构)被视为不合格的,可能是从特定源网络收集附加数据位置,或可能是被迫无视某些DNT要求,以遵守当地法律、法规或命令。

注释

编写本规范时假设D类跟踪状态值仅用于可以向用户充分描述为正常行为的异常。如果事实并非如此情况下,服务器决定发送D类信号需要重新检查,或本规范,或两者兼而有之。

7.2.10更新(U)

跟踪状态值为U型表示请求导致适用的跟踪状态可能发生变化发送给此用户、用户代理或设备。依赖于缓存的跟踪状态应该使用通过对适用的跟踪提出新的请求获得当前状态状态资源。

源服务器不能发送U型作为跟踪状态值以外的任何位置塔克中的标题字段响应状态更改请求。

7.2.11跟踪状态值的扩展

的可扩展性TSV公司set确保此协议将继续作为区域法律和监管环境使用随着时间的推移不断发展,并制定了合规性规范因此。

源服务器5月发送TSV扩展字符作为TSV公司如果该扩展已由未来版本定义本规范或顺从属性。除了存储或呈现服务器的响应,收件人必须处理TSV扩展值它无法识别该值P(P)(仅跟踪如果同意)。

TSV扩展=%x23-25;#$%/%x2A-3B;*+,-/0-9:;/%x40-42@AB公司/%x45-46;EF公司/百分比x48-4D;HIJKLM公司/%x4F;O(运行)/%x51-53;QRS(QRS)/%x56-5A;VWXYZ公司/%x5F_/%x61-7A;a-z型

7.3HTTP响应的Tk标头字段

7.3.1定义

这个塔克响应标题字段是指示应用于相应请求的跟踪状态。源服务器是必修的发送塔克收割台字段,如果其站点范围跟踪状态值为?(动态)或G公司(网关),或当交互式更改设置为跟踪状态,并由U型(更新)。

Tk-field-name=“Tk”Tk-field-value=TSV[“;”状态-id]

Tk字段值以跟踪状态值开始(部分7.2 跟踪状态值),可以选择后跟分号和状态id指特定于请求的跟踪状态资源(部分7.3.2 引用特定于请求的跟踪状态资源).

例如,资源的Tk标头字段声明不将跟踪如下所示:

塔克:N个

7.3.2引用特定于请求的跟踪状态资源

如果源服务器具有多个特定于请求的跟踪策略,以便跟踪状态可能因请求的某些方面(例如方法、,目标资源,标头字段、数据等),源服务器可以提供额外的与每个已知资源对应的子树不同的跟踪状态。这个状态id的一部分塔克字段值指示特定的跟踪状态资源应用于当前请求。这个状态id区分大小写。

状态id=1*id-charid-char=ALPHA/DIGIT/“_”/“-”/“+”/“=”/“/”

例如,包含

塔克:T;fRx42型

指示通过目标资源收集的数据可能是用于跟踪,并且适用的跟踪状态表示可以通过执行检索请求获得

/众所周知/dnt/fRx42

请注意状态id是相对解析的发送到当前请求的源服务器。检索请求如果需要,可以将目标URI重定向到其他URI服务器。这个状态id已被故意限制改为一组小字符,以鼓励使用短标记而不是潜在的长的、人类可读的字符串。

如果Tk字段值的跟踪状态值为?(动态),源服务器必须发送状态id在字段值中。

7.3.3指示交互式状态更改

除此之外,还可以使用交互机制本规范的范围,具有询问的效果并获得跟踪或修改的事先同意事先表示同意。例如,跟踪状态资源的状态对象定义配置可以引用此类机制的属性。尽管如此本规范未定义带外机制,它们的存在可能会影响跟踪状态对象的响应值。

当源服务器通过HTTP为建立或修改银行外跟踪首选项,源服务器必须在机构响应中指示当状态更改请求导致对跟踪该服务器的状态。这表明通过发送塔克具有跟踪状态的响应中的头字段的值U型(更新)。

塔克:U

7.4跟踪状态资源

7.4.1站点范围的跟踪状态

A类站点范围的跟踪状态资源提供关于资源潜在跟踪行为的信息位于该源服务器上。站点范围的跟踪状态资源具有已知标识符

/众所周知/dnt/

相对于源服务器的URI[RFC5785号文件].

接收有效GET(获取)请求瞄准其站点范围的跟踪状态资源必须发送任一包含机器可读表示的成功响应站点范围的跟踪状态(定义如下)或序列导致这种表示的重定向。未能提供对这种表示的访问意味着源服务器没有实现该协议。可以缓存表示,如所述在里面部分7.4.4 缓存.

请参见部分8 用例对于跟踪状态资源如何用于发现的示例支持此协议。

7.4.2特定于请求的跟踪状态

如果源服务器有多个特定于请求的跟踪策略,以便跟踪状态可能因请求的某些方面(例如,方法、目标资源、头字段、数据等),源服务器可以提供额外的与每个已知资源对应的子树不同的跟踪状态。这个塔克响应标题字段(部分7.3 HTTP响应的Tk标头字段)可以包括一个状态id指明具体的跟踪状态资源应用于当前请求。

A类跟踪状态资源空间由定义以下URI模板[RFC6570协议]:

/众所周知/dnt/{+status-id}

其中的值状态id是一个URI安全字符串由提供的字符塔克响应a的字段值事先请求。例如,先前的响应包含

塔克: ?;阿荷

指特定的跟踪状态资源

/.知名/dnt/ahoy

特定于请求的跟踪状态资源中的资源空间使用与站点范围相同的格式表示跟踪状态资源。

7.4.3未跟踪状态检查

发送跟踪状态请求时,用户代理应该包括任何cookie数据[RFC6265协议](设置在请求)将以正常请求发送到该来源服务器,因为服务器可能需要该数据来确定当前跟踪状态。例如,cookie数据可能表明用户先前的带外决定选择退出或同意该源服务器进行跟踪。

源服务器不能保留有关请求的跟踪数据在站点范围的跟踪状态资源上或在跟踪中状态资源空间,无论是否存在DNT头字段、cookie或中任何其他信息的值请求。此外,源服务器不能发送Set-Cookie或响应这些请求的Set-Cookie2头字段,包括对重定向跟踪状态请求的响应,不能发送包含发起内容的响应跟踪请求中已经存在的内容。用户代理应该忽略任何Set-Cookie,或将其视为错误或在此类响应中接收到的Set-Cookie2头字段。

7.4.4缓存

如果跟踪状态适用于所有用户,无论收到的DNT公司字段值和通过请求,然后是源服务器应该将响应标记为可缓存的[RFC7234协议]并指定生存时间(到期或maxuse),这足以启用共享缓存,但不能大于服务跟踪的最早点行为可能会增加。

例如,如果跟踪状态响应设置为在中过期七天,然后是服务的最早时间点跟踪行为可以在跟踪状态表示已经更新以反映新的行为,因为旧副本可能保持在缓存中,直到触发到期。A服务的无论是否使用跟踪状态资源的相应更改。

如果跟踪状态仅适用于具有相同的DNT公司字段值,源服务器必须发送更改在其字段值中包含“DNT”的标题字段或Cache-Control头字段包含以下内容之一指令:“private”、“no-cache”、“no store”或“max-age=0”。

如果跟踪状态仅适用于特定用户请求它的,然后是源服务器必须发送Cache-Control头字段包含以下内容之一指令:“private”、“no-cache”或“no-store”。

无论缓存控制设置如何,预计用户代理只会检查一次服务的跟踪状态每次会话(最多)。一个打算更改其跟踪状态以增加跟踪行为必须根据该信息更新跟踪状态资源激活前至少24小时计划的行为服务上的新行为。

基于主动验证调整行为的用户代理跟踪状态,依赖缓存的跟踪状态响应这样做,应该检查对其状态更改请求的响应(例如,POST、PUT、DELETE等)塔克标题字段使用U型跟踪状态值,如中所述部分7.3.3 指示交互式状态更改.

7.5跟踪状态表示

对于每个跟踪状态资源,一个源服务器必须提供一个使用应用程序/跟踪状态+json媒体类型。此媒体类型由状态对象序列化为JSON[RFC8259协议]. 有关的更多信息应用程序/跟踪状态+json媒体类型可以是在中找到部分B。 注册.

7.5.1Status对象

跟踪状态表示由单个状态对象包含的属性描述适用于指定资源。大多数属性是可选的并且可以是随时间延长,如以下Orderly模式所示[有序地]:

对象{字符串跟踪;//TSV公司数组{string;}符合性?;//高频字符串限定符?;//符合性标志数组{string;}控制器?;//赫雷斯数组{string;}same-party?;//数组{string;}审计?;//高频字符串策略?;//href公司字符串配置?;//href公司}*;

以下示例演示了一个状态对象具有本规范定义的所有属性。

{“跟踪”:“T”,“合规性”: ["https://acme.example.org/tracking101"],“限定符”:“afc”,“控制器”: ["https://www.example.com/privacy网址"],“同一党派”: [“example.com”,“example_vids.net”,“example_stats.com”],“审计”: ["http://auditor.example.org/727073"],“政策”:“/privacy.html#跟踪”,“配置”:"http://example.com/your/data"}

7.5.2跟踪属性

A类状态对象 必须具有名为的属性跟踪字符串值包含跟踪状态值(部分7.2 跟踪状态值)适用于指定资源.

例如,下面演示了最小跟踪状态适用于任何不执行跟踪。

{“跟踪”:“N”}

7.5.3合规性属性

源服务器5月发送名为的属性顺从数组值包含URI引用列表,用于标识特定的制度源服务器声明遵守指定的资源。传达这种合规性声明被认为会有所改进透明度,这可能会影响用户的决策或有关允许跟踪的配置。

如果源服务器发送TSV扩展或一个状态对象中的扩展属性未由本规范的继承者定义源服务器必须发送顺从该属性包含对该最终规范的引用扩展。如果在顺从数组定义了相同的扩展值,即源服务器应该按预期优先级列出引用数组。

7.5.4限定符属性

源服务器5月发送名为的属性限定符具有字符串值包含对应的大小写敏感字符序列对跟踪范围的解释或限制。多个限定符表示多个解释或形式的跟踪可能适用于指定的资源。每个限定词的含义被认为是由一个限定词定义的或中列出的更多制度顺从.

7.5.5控制器属性

源服务器5月发送名为的属性控制器数组值包含间接标识参与方或声称是负责数据控制者的一组当事人用于通过指定资源收集的个人数据。起源服务器必须发送控制器属性,如果责任数据控制器不拥有指定资源的域名。

不发送的源服务器控制器意味着其域所有者是唯一的数据控制器;有关数据控制器的信息应在指定资源的站点根页面,或通过从该页面指示的链接(即缺少控制器属性等于:“控制器”:[“/”]).

如果指定资源具有联合数据控制器(即多方对收集的数据),源服务器必须发送控制器包含引用的属性对于每个数据控制器。

中提供的每个URI引用控制器应该如果对其执行检索操作,则引用该资源该URI将为用户提供有关(在最小)对应方的身份及其数据收集实践。

7.5.6同一方财产

由于用户在给定站点上的体验可能包括从多个域组装的资源,可能是有助于站点区分受他们自己的控制(即与参考站点)。源服务器5月发送名为的属性同党派数组值包含源服务器声明相同的域名列表指定方引用的资源,如果通过这些引用收集的所有数据共享与指定资源相同的数据控制器。

用户代理可以使用同党派数组,当提供时,通知或启用不同的行为声称是同一党派的参考文献与未提出索赔。例如,用户代理可以选择排除或执行额外的飞行前验证,对其他未声明为同一方的域的请求由参考网站提供。

7.5.7审核属性

源服务器5月发送名为的属性审计数组值包含指定的外部审计的URI引用列表资源的隐私策略和跟踪行为。审计参考最好是描述以下内容的资源审计师及其审计结果;然而,如果这样资源不可用,对审计员的引用足够了。

7.5.8策略属性

源服务器5月发送名为的属性政策字符串值包含对人类可读文档的URI引用,该文档描述指定资源的相关隐私策略。此文档可以通知用户可能收集的数据访问指定资源的时间以及如何收集、使用、,或根据收到的明确的跟踪偏好(DNT:1个请勿打扰:0).

原始服务器必须发送政策属性,如果是服务器是有效脚本来源调用的脚本用于存储用户粒度异常,作为中描述的部分6.3 授予例外.

此类政策文件的内容超出了本协议的范围,只是对所描述内容的补充在机器可读的跟踪状态表示中。如果没有政策属性,此可以通过中提供的链接获取信息控制器.

如果与指定资源关联的策略恰好是定义为适用于多个站点的通用标准,或通过引用包含此类标准,则该标准应由机器可读的URI引用顺从属性。

7.5.9Config属性

源服务器5月发送名为的属性配置字符串值包含对资源的URI引用,用于让用户控制通过指定资源收集的个人数据(可能其他资源)。如果跟踪状态值表示事先同意(C类),源服务器必须发送配置属性引用的资源描述了这种同意是如何建立的,以及如何撤销这种同意同意。

配置资源可能包括查看收集过去的数据,删除部分或全部数据,提供附加数据(如果需要),或选择进入,选择输出,或以其他方式修改关于数据收集。这种资源的设计,它可以提供访问该数据的范围,以及如何实现带外同意机制超出了本协议的范围。

如果没有配置属性,此可以通过中提供的链接获取信息控制器政策.

7.5.10状态对象的扩展

状态对象的可扩展性确保此协议将继续作为区域法律和监管环境使用随着时间的推移不断发展,并制定了合规性规范因此。

源服务器5月在中发送其他属性地位对象如果这些扩展是由未来定义的本规范或合规制度的版本顺从属性。除了存储或显示服务器的响应之外,接收者必须忽略它所做的扩展属性无法识别。

7.6需要跟踪的状态代码

如果源服务器收到请求DNT:1个,没有跟踪此用户的银行外许可,并且希望拒绝访问请求的资源,直到用户为跟踪提供某种形式的用户授予的例外或同意,然后是源服务器应该发送409(冲突)响应描述请求被拒绝的原因以及如何提供必要的同意或例外以避免这种情况冲突[RFC7231协议].

409响应应包括用户身份验证机制如果用户登录名是授予访问权限的方式。

8用例

本节不规范。

编辑注释

本部分用于收集描述问题的用例用户代理可能有关于跟踪状态和协议如何可以用来回答这些问题。需要更多案例。

8.1发现部署

为给定服务部署此协议可以通过在站点范围内发出检索请求来发现跟踪资源/众所周知/dnt/相对的到服务URI。

如果响应是错误,则服务不会实现本标准。如果响应是重定向,则遵循重定向以获取跟踪状态(达到一些合理的最大重定向次数以避免错误配置的无限请求环路)。如果响应成功,则获取跟踪状态如果可能,从消息有效负载表示,或考虑这是一个错误。

8.2飞行前检查

在资源上提供跟踪状态的关键优势与站点的正常服务不同的是,状态可以在使用这些服务之前进行访问和审查。

用户代理可以检查指定资源通过首先对如上所述的站点范围的跟踪状态表示,然后将表示解析为JSON以提取状态对象.如果检索不成功或解析导致语法错误,用户代理应该将站点视为与该协议不一致。

这个状态对象应该有一个名为的属性跟踪包含跟踪状态值。定义了每个跟踪状态值的含义在里面部分7.2 跟踪状态值.

如果跟踪状态值为N个,然后是源服务器声称没有对指定的资源执行跟踪至少在接下来的24小时内或直到Cache-Control信息指示此响应到期。

如果跟踪状态值不是N个,然后是原点服务器声称它可能会跟踪用户代理上的请求至少在接下来的24小时内或直到Cache-Control信息指示此响应到期。

9安全注意事项

通过DNT标题字段传递的信息最小化为避免滥用字段进行指纹识别或作为副通道。然而,未来的DNT扩展可能允许发送额外的通过发送跟踪同意信号时的信息请勿打扰:0,因为这种同意机制比cookie,可用于将假名标识符作为用户推荐了允许设置cookie的替代方法。

使用客户端存储始终是一个安全问题。尽管为每个存储的信息用户粒度异常有限,脚本无法直接访问,存储太多异常可能超出可用存储空间,或表示试图利用其他漏洞。

脚本执行以下操作的能力也存在安全问题存储超出其范围的异常有效脚本来源.请参阅API安全注意事项在里面部分6.6.1 用于存储跟踪异常的API.

10隐私注意事项

10.1为什么默认情况下未预配置DNT:1

本规范定义了一个协议,用于与用户的跟踪首选项,而不是阻止跟踪的协议。人们可能会认为隐私设计为呼吁辩护DNT:1个预配置为默认值用于所有用户代理。然而,这将违反字段的语义,使其在请求中的存在无意义,并添加八个额外字节每个HTTP请求(无效)。

仅DNT信号对增强用户的隐私没有任何作用。只有当接受者相信信号已经故意和故意配置,未定义为默认,他们会认为这是用户的偏好。此外,当未发送任何信号时,收件人仍受关于追踪存在于未经同意的情况下。

10.2指纹识别

用户粒度异常会带来隐私风险。通过存储客户端可配置状态并提供要学习的功能稍后,用户粒度异常API可能会方便用户指纹识别和跟踪。用户代理开发人员应该考虑在实施过程中指纹识别的可能性和可能考虑速率限制请求或使用其他启发式方法来缓解指纹识别风险。

10.3存储的异常是存储的历史记录

存储异常的数据库有效地存储用户浏览的网站的本地历史记录。每个用户配置文件需要单独的数据库(以及每个隐姓埋名会话),并且应该防止被观察。用户可能会希望清除存储的异常,或清除整个数据库,但作为清除可见浏览器历史记录的单独操作。

答:。鸣谢

本规范包括内部许多讨论的输入和周围W3C公司跟踪保护工作组,以及书面贡献来自阿德里安·贝特曼(微软),贾斯汀·布鲁克曼(CDT),尼克·多蒂(W3C公司/麻省理工学院),Marcos Caceres(Mozilla),Rob van Eijk(特邀专家),罗伊·T·。Fielding(Adobe),Vinay Goel(Adobe),Tom Lowenthal(Mozilla),乔纳森·迈耶(斯坦福),Aleecia M.阿莱西娅。麦克唐纳(斯坦福),Mike O'Neill(Baycloud Systems),Matthias Schunter(英特尔),约翰·辛普森(消费者看门狗),David Singer(苹果),里戈·温宁(W3C公司/ERCIM公司),Shane Wiley(雅虎),和Andy Zeigler(微软)。

DNT标题字段基于原始请勿跟踪Jonathan Mayer(斯坦福)、Arvind Narayanan提交(斯坦福)和Sid Stamm(Mozilla)。的JavaScript DOM属性doNotTrack(未跟踪)基于Web跟踪保护安迪·齐格勒提交,阿德里安·贝特曼和艾略特·格拉夫(微软)。非常感谢Robin Berjon提供的ReSpec.js。

B。注册

B.1节注册应用程序/跟踪状态+json

媒体类型应用程序/跟踪状态+json用于跟踪状态表示(部分7.5 跟踪状态表示).

类型名称:
应用
子类型名称:
跟踪状态+json
所需参数:
不适用
可选参数:
不适用
编码注意事项:
二元的
安全注意事项:
请参阅JSON[RFC8259],第12节。
互操作性注意事项:
不适用
发布规范:
跟踪首选项表达式(DNT),部分7.5 跟踪状态表示.
https://www.w3.org/TR/tracking-dnt/
使用此媒体类型的应用程序:
不适用
片段标识符注意事项:
不适用
其他信息:
此类型不推荐使用的别名:N/A
幻数:不适用
文件扩展名:不适用
Macintosh文件类型代码:不适用
联系人和电子邮件地址以获取更多信息:
W3C公司跟踪保护工作组<public-tracking@w3.org>
预期用途:
通用
使用限制:
不适用
作者:
罗伊·菲尔丁和大卫·辛格
更改控制器:
W3C公司

B.2节DNT标题字段的注册

DNT标题字段,定义于部分5.2 HTTP请求的DNT标头字段,将成为在消息头注册表中注册了协议“http”[RFC3864协议].

DNT在本规范中的使用仅限于提供控制数据在包含单个值的HTTP请求中,该值不包括逗号列表分隔符;每个消息的多个DNT头字段不是允许。DNT旨在通过未经修改的中间商和端到端;不打算在连接中列出。虽然不太可能在PUT请求中使用,但该字段不是部分表示,并且不打算以这种方式存储。

两者都有DNT公司塔克特别是旨在避免响应因DNT而异值。然而,选择生成不同内容的服务器根据收到的DNT值,可以通过包括其响应的Vary标头字段中的DNT字段名称。

B.3节Tk标题字段的注册

Tk标题字段,定义于部分7.3 HTTP响应的Tk标头字段,将成为在消息头注册表中注册了协议“http”[RFC3864协议].

本规范中Tk的使用仅限于提供控制数据在包含单个值的HTTP响应中,该值不包括逗号列表分隔符;每条消息的多个Tk头字段不是允许。Tk旨在通过未经修改的中间商,以及端到端;不打算在连接中列出。

B.4节URI/.knowled/dnt注册

用于跟踪状态资源的众所周知的URI空间,定义于部分7.4 跟踪状态资源,将在已知URI注册表中注册[RFC5785号文件].

C、。变化

C.1条款自第二次CR以来

跟踪异常的名称和解释参数进一步定义为UTF-8,使用与告知同意书。

添加了用于注册DNT和Tk标题字段的附录,加上著名dnt URI空间的注册。

C.2条款自第一次CR以来

客户端脚本API已被重写,以减少使用函数并返回Promises。API名称也已更改以防止与先前API的潜在部署混淆。

浏览上下文、顶级来源和域的术语已更新为使用HTML5中的术语。

规范现在定义了如何扩展Tk标题字段(例如。,遵守未来可能的法律要求)。没有此类扩展目前已知。

不再能够向DNT标题字段添加扩展标记为“有风险”,因为小组认为此功能无法被删除。

D。工具书类

D.1款规范性引用文件

【HTML51】
HTML 5.1第2版史蒂夫·福克纳;阿伦·埃霍尔茨(Arron Eicholz);特拉维斯·利希德(Travis Leithead);亚历克斯·达尼洛。W3C公司。2017年10月3日。W3C建议。网址:https://www.w3.org/TR/html51/
[RFC2119]
RFC中用于指示需求级别的关键词.S.布拉德纳。IETF。1997年3月。当前最佳实践。网址:https://tools.ietf.org/html/rfc2119
[RFC3986]
统一资源标识符(URI):通用语法T.Berners-Lee;R.菲尔丁;L.Masinter。IETF。2005年1月。互联网标准。网址:https://tools.ietf.org/html/rfc3986
[射频5244]
用于语法规范的增强BNF:ABNFD.Crocker,编辑。;P.奥维尔。IETF。2008年1月。互联网标准。网址:https://tools.ietf.org/html/rfc5234
[RFC6265]
HTTP国家管理机制.A.巴思。IETF。2011年4月。拟议标准。网址:https://tools.ietf.org/html/rfc6265
[RFC7230]
超文本传输协议(HTTP/1.1):消息语法和路由R.Fielding编辑。;J.Reschke,编辑,IETF。2014年6月。拟议标准。网址:https://tools.ietf.org/html/rfc7230
[RFC7231]
超文本传输协议(HTTP/1.1):语义和内容R.Fielding编辑。;J.Reschke,编辑,IETF。2014年6月。拟议标准。网址:https://tools.ietf.org/html/rfc7231
[RFC7234]
超文本传输协议(HTTP/1.1):缓存R.Fielding编辑。;M.诺丁汉,编辑。;J.Reschke,编辑,IETF。2014年6月。拟议标准。网址:https://tools.ietf.org/html/rfc7234
[RFC8259]
JavaScript对象表示法(JSON)数据交换格式T.Bray,IETF编辑。2017年12月。互联网标准。网址:https://tools.ietf.org/html/rfc8259
【WEBIDL】
Web IDL卡梅隆·麦科马克(Cameron McCormack);鲍里斯·兹巴尔斯基;托比·兰格尔。W3C公司。2016年12月15日。W3C编辑草稿。网址:https://heycam.github.io/webidl/
[WebIDL-20161215]
WebIDL级别1卡梅隆·麦科马克。W3C公司。2016年12月15日。W3C建议。网址:https://www.w3.org/TR/2016/REC-WebIDL-1-20161215/

D.2款参考资料

[ECMASCRIPT]
ECMAScript语言规范埃克玛国际。网址:https://tc39.github.io/ecma262/
[知道隐私]
知识隐私约书亚·戈麦斯(Joshua Gomez);特拉维斯·平尼克;阿什坎·索尔塔尼。加州大学伯克利分校信息学院。2009年6月1日。网址:http://www.knowprivacy.org/report/knowprivacy_Final_report.pdf
[有序]
有序JSON劳埃德·希莱尔,2010年2月22日。网址:https://github.com/lloyd/ordernal(https://github.com/lloyd/sordernal)
[承诺指南]
使用规范编写承诺多梅尼克巧克力。W3C公司。2017年1月3日。W3C标签的发现。网址:https://www.w3.org/2001/tag/doc/promises-guide网站
[RFC3864]
消息头字段的注册过程G.Klyne;M.诺丁汉;J.莫格尔。IETF。2004年9月。当前最佳实践。网址:https://tools.ietf.org/html/rfc3864
[射频5785]
定义已知的统一资源标识符(URI)M.诺丁汉;E.哈默-拉哈夫。IETF。2010年4月。拟议标准。网址:https://tools.ietf.org/html/rfc5785
[RFC6570]
URI模板J.格雷戈里奥;R.菲尔丁;M.Hadley;M.诺丁汉;D.果园。IETF。2012年3月。拟议标准。网址:https://tools.ietf.org/html/rfc6570
[TCS](牵引力控制系统)
跟踪合规性和范围尼克·多蒂;Heather West;贾斯汀·布鲁克曼;肖恩·哈维;埃里卡·纽兰。W3C公司。2015年3月31日。W3C工作草案。网址:https://www.w3.org/TR/tracking-compliance网站/