- From: Eduardo Casais <casays@yahoo.com>
- Date: Mon, 1 Dec 2008 06:50:06 -0800 (PST)
- To: public-bpwg-ct@w3.org
> I'm sure I forgot something important here. What is it? ;-) I believe that we are almost there; the approach you suggest is the right one. > ... and propose to adjust the wording of section 4.1.5.5 > consequently only to refer to User-Agent and Accept(-*) > headers (which we have to do anyway if we are to register > the X-Device-* headers in any proper way) You are right, these fields must be identified accurately. I suggest we insert the following definitions in 4.1.5.5: "Capability fields are the HTTP header fields User-Agent, Accept, Accept-Charset, Accept-Encoding, Accept-Language. Backup capability fields are HTTP header fields corresponding to capability fields and named X-Device-User-Agent, X-Device-Accept, X-Device-Accept-Charset, X-Device-Accept-Encoding, X-Device-Accept-Language, respectively. The value of a backup capability field is the same as the value of the corresponding capability field as originally sent by the terminal user-agent." > In short, I propose something along the lines of: > " > Proxies SHOULD NOT modify the User-Agent and Accept(-*) headers unless: > [list of 3 possibilities, possibly amending the third one] > Proxies MUST NOT delete headers. > It MUST be possible to reconstruct the original User-Agent and > Accept(-*) headers (see 4.1.5.5)" This leaves ambiguities as to how to reconstruct original values, how to update the X-Device-* fields, and so on. We can make the proposed statement in 4.1.5 clearer thus: "Except as specified in sections 4.1.1, 4.1.6, 4.1.6.1, 4.2.4 of the present document, and except as prescribed by RFC2616 and other published standards in force, a proxy 1. SHOULD NOT modify capability fields and MUST NOT delete them; 2. MUST NOT modify backup capability fields; 3. MUST NOT alter the remainder of the HTTP header in any way. If a proxy modifies a capability field and no corresponding backup capability field is present in the HTTP header, then it MUST, prior to modification, insert a corresponding backup capability field whose value is the original value of the capability field in question. If the request does not include the capability field, and the proxy introduces it into the HTTP header, then the corresponding backup capability field MUST be assigned the empty value. The proxy MUST NOT introduce duplicate capability fields. If a proxy deletes a backup capability field, then it MUST, prior to deletion, re-assign its value to the corresponding capability field." Some redactional melding with the remainder of 4.1.5 may still be needed. Rationale: The statements make sure that one modifies the request safely and can always reconstruct the original request, because a) The X-Device-* fields always contain the original values and are never overwritten; there are no duplicate X-Device-* so that no confusion as to the order of updates arises. b) Whenever a X-Device-* field is deleted, the original field is restored with the original value. c) If the terminal does not send some field, then it is possible to introduce them, but a X-Device-* field indicates that the original field was empty. Yes, this happens, for instance many i-Mode devices do not send Accept and Accept-Charset. d) The rest of the HTTP header remains untouched (no insertions, deletions, suppressions) except as prescribed by standards (yes, other standards than RFC2616, e.g. UAProf, may allow alterations of the HTTP header) or as necessary for the other limited operations in the CTG. E.Casais
Received on Monday, 1 December 2008 15:05:56 UTC