Skip to content

Commit e54fe69

Browse files
mnotigrigorik
authored andcommitted
CH suggestions (#729)
* Make the abstract more direct & refine introduction * Reword fingerprinting text * Specification -> document consistently * Drop the ISBN
1 parent 3127690 commit e54fe69

File tree

2 files changed

+17
-8
lines changed

2 files changed

+17
-8
lines changed

draft-ietf-httpbis-cdn-loop.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ informative:
4545
- name: Vern Paxson
4646
date: 2016/02/21
4747
seriesinfo:
48-
ISBN: 1-891562-41-X
4948
DOI: 10.14722/ndss.2016.23442
5049
target: http://www.icir.org/vern/papers/cdn-loops.NDSS16.pdf
5150

draft-ietf-httpbis-client-hints.md

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,11 @@ informative:
5454

5555
--- abstract
5656

57-
An increasing diversity of Web-connected devices and software capabilities has created a need to deliver optimized content for each device.
57+
HTTP defines proactive content negotiation to allow servers to select the appropriate response for a given request, based upon the user agent's characteristics, as expressed in request headers. In practice, clients are often unwilling to send those request headers, because it is not clear whether they will be used, and sending them impacts both performance and privacy.
5858

59-
This specification defines an extensible and configurable set of HTTP request header fields, colloquially known as Client Hints, to address this. They are intended to be used as input to proactive content negotiation; just as the Accept header field allows user agents to indicate what formats they prefer, Client Hints allow user agents to indicate device and agent specific preferences.
59+
This document defines two response headers, Accept-CH and Accept-CH-Lifetime, that servers can use to advertise their use of request headers for proactive content negotiation, along with a set of guidelines for the creation of such headers, colloquially known as "Client Hints."
60+
61+
It also defines an initial set of Client Hints.
6062

6163

6264
--- note_Note_to_Readers
@@ -81,11 +83,19 @@ One way to infer some of these capabilities is through User-Agent (Section 5.5.3
8183
- User agent detection requires an external device database
8284
- User agent detection is not cache friendly
8385

84-
A popular alternative strategy is to use HTTP cookies ({{RFC6265}}) to communicate some information about the user agent. However, this approach is also not cache friendly, bound by same origin policy, and imposes additional client-side latency by requiring JavaScript execution to create and manage HTTP cookies.
86+
A popular alternative strategy is to use HTTP cookies ({{RFC6265}}) to communicate some information about the user agent. However, this approach is also not cache friendly, bound by same origin policy, and often imposes additional client-side latency by requiring JavaScript execution to create and manage HTTP cookies.
87+
88+
Proactive content negotiation (Section 3.4.1 of {{RFC7231}}) offers an alternative approach; user agents use specified, well-defined request headers to advertise their capabilities and characteristics, so that servers can select (or formulate) an appropriate response.
89+
90+
However, proactive content negotiation requires clients to send these request headers prolifically. This causes performance concerns (because it creates "bloat" in requests), as well as privacy issues; passively providing such information allows servers to silently fingerprint the user agent.
91+
92+
This document defines a new response header, Accept-CH, that allows an origin server to explicitly ask that clients send these headers in requests, for a period of time bounded by the Accept-CH-Lifetime response header. It also defines guidelines for content negotiation mechanisms that use it, colloquially referred to as Client Hints.
93+
94+
Client Hints mitigate the performance concerns by assuring that clients will only send the request headers when they're actually going to be used, and the privacy concerns of passive fingerprinting by requiring explicit opt-in and disclosure of required headers by the server through the use of the Accept-CH response header.
8595

86-
This document defines a set of new request header fields that allow user agent to perform proactive content negotiation (Section 3.4.1 of {{RFC7231}}) by indicating device and agent specific preferences, through a mechanism similar to the Accept header field which is used to indicate preferred response formats.
96+
This document also defines an initial set of Client Hints.
8797

88-
Client Hints does not supersede or replace the User-Agent header field. Existing device detection mechanisms can continue to use both mechanisms if necessary. By advertising its capabilities within a request header field, Client Hints allows for cache friendly and proactive content negotiation.
98+
It does not supersede or replace the User-Agent header field. Existing device detection mechanisms can continue to use both mechanisms if necessary. By advertising user agent capabilities within a request header field, Client Hints allow for cache friendly and proactive content negotiation.
8999

90100
## Notational Conventions
91101

@@ -109,7 +119,7 @@ Implementers should be aware of the passive fingerprinting implications when imp
109119

110120
When presented with a request that contains one or more client hint header fields, servers can optimize the response based upon the information in them. When doing so, and if the resource is cacheable, the server MUST also generate a Vary response header field (Section 7.1.4 of {{RFC7231}}) to indicate which hints can affect the selected response and whether the selected response is appropriate for a later request.
111121

112-
Further, depending on the hint used, the server can generate additional response header fields to convey related values to aid client processing. For example, this specification defines the "Content-DPR" response header field that needs to be returned by the server when the "DPR" hint is used to select the response.
122+
Further, depending on the hint used, the server can generate additional response header fields to convey related values to aid client processing. For example, this document defines the "Content-DPR" response header field that needs to be returned by the server when the "DPR" hint is used to select the response.
113123

114124

115125
### Advertising Support via Accept-CH Header Field {#accept-ch}
@@ -243,7 +253,7 @@ The Content-DPR response header field indicates to the client that the server ha
243253

244254
# Security Considerations
245255

246-
The request header fields defined in this specification, and those that extend it, expose information about the user's environment to enable proactive content negotiation. Such information may reveal new information about the user and implementers ought to consider the following considerations, recommendations, and best practices.
256+
The request header fields defined in this document, and those that extend it, expose information about the user's environment to enable proactive content negotiation. Such information may reveal new information about the user and implementers ought to consider the following considerations, recommendations, and best practices.
247257

248258
Transmitted Client Hints header fields SHOULD NOT provide new information that is otherwise not available to the application via other means, such as using HTML, CSS, or JavaScript. Further, sending highly granular data, such as image and viewport width may help identify users across multiple requests. Reducing the set of field values that can be expressed, or restricting them to an enumerated range where the advertised value is close but is not an exact representation of the current value, can improve privacy and reduce risk of linkability by ensuring that the same value is sent by multiple users. However, such precautions can still be insufficient for some types of data, especially data that can change over time.
249259

0 commit comments

Comments
 (0)