ACTION-741: concrete proposal on the use of the Via HTTP header comment

[Note this action has a duplicate: ACTION-742 that I reference here for 
tracker to pick the mail up]


Context
-------
As written in §4.1.3 [1] "Proxy Indication of its Presence to Server", 
the "proxy MUST [...] include a Via HTTP header indicating its presence".

Via headers are described in the HTTP RFC2616, section 14.45 [2]. A 
typical example of a Via header would be:
 Via: 1.1 example.org [possible comments]

The hostname part merely states that the message went through a proxy, 
but there's no way to distinguish between a "regular" proxy and a 
CT-proxy. We agreed to use the comments part of the header and Aaron 
suggested [3] we use a URI in the comment. This URI would typically link 
to a POWDER resource describing the CT-proxy's capabilities. We'll most 
probably go down the POWDER route, but with or without POWDER, as Bryan 
pointed out during Seoul's F2F [4], a mere flag would be already a good 
start to advertise the fact the message went through a CT-proxy.

The flag could be slightly completed to include the proxy's intention to 
transform, although I'm not entirely sure we should pass on that 
information to the server in the sense that even if the proxy doesn't 
say "I intend to transform", it still may transform the response.


Use cases
---------
1. 3.d point in our list of requirements in §3.1 [5] is: "[the origin 
server needs to be able to tell the CT-proxy] that it is unable or 
unwilling to deal the request in its presence form". In the landscape 
document [6], one of the requirements is "Origin servers and proxies 
must be able to identify the actual identity of components of the 
delivery context, including (other) proxies and browsers". I take both 
requirements as meaning that the content provider must be able to tell 
when there's a CT-proxy on the delivery chain, and be able to exercise 
their right to refuse to serve a resource that they don't want to see 
transformed by a CT-proxy. One may say the "no-transform" directive is 
enough, but it's not exactly the same answer.

2. As mentioned by Andrew [7], knowing that a CT-proxy is on the 
delivery chain is of much use for diagnostics reasons. If your content 
was transformed before delivery, that's obviously something you'll want 
to investigate. (There's a caveat: the difference between a regular 
proxy and a CT-proxy is not so obvious, but I tend to think the 
difference is large enough for the distinction to be worth while)


Proposed resolution
--------------------
If we go down the POWDER route, we'll need to define the vocabulary to 
use to describe the CT-proxy's capabilities. The vocabulary will need to 
be associated with a namespace URI. Basically, I suggest we already 
define a property of this vocabulary that acts as a global flag. I'm not 
an expert in vocabularies (feel free to educate me on this!), but I 
guess we may simply use the namespace itself as the flag.

PROPOSED RESOLUTION: format of the VIA header comments: [a URI to a 
POWDER resource that describes the CT-proxy's capabilities using the 
vocabulary-to-be when we're ready to switch to POWDER or] the CT 
namespace's URI "http://www.w3.org/2008/04/ct#". Intention to transform 
must be indicated using the "active" property: 
"http://www.w3.org/2008/04/ct#active".


Open question
-------------
Should we have another property to say "I don't intend to transform" 
("passive" for instance)?


References
----------
[1] 
http://www.w3.org/2005/MWI/BPWG/Group/TaskForces/CT/editors-drafts/Guidelines/080410#sec-proxy-presence-indication
[2] http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.45
[3] http://www.w3.org/2008/02/26-bpwg-minutes.html#item05
[4] http://www.w3.org/2008/03/03-bpwg-minutes.html#item05
[5] 
http://www.w3.org/2005/MWI/BPWG/Group/TaskForces/CT/editors-drafts/Guidelines/080410#sec-requiremnts-summary
[6] http://www.w3.org/TR/2007/WD-ct-landscape-20071025/#d0e227
[7] http://www.w3.org/2008/04/22-bpwg-minutes.html#item06


François.

Received on Thursday, 24 April 2008 10:01:05 UTC