- From: Koen Holtman <koen@win.tue.nl>
- Date: Fri, 15 Sep 1995 13:41:04 +0200 (MET DST)
- To: Roy Fielding <fielding@beach.w3.org>
- Cc: masinter@parc.xerox.com, http-wg%cuckoo.hpl.hp.com@hplb.hpl.hp.com
Roy Fielding: >>Let me suggest again "accept-parameter: <parameter><rel><value>" >>where <parameter> is a parameter to a number of media types (e.g., >>charset), <rel> is a relation operator (e.g., =), and <value> is a >>value specifier consistent with <rel>. [...] >And let me point out again the two flaws with this proposal. > > 1) There are no common media type parameters other than > charset and boundary (and the latter is not negotiable). > > 2) When media types do use the same name for a parameter, they > may have entirely different meaning or have incompatible domains. > One obvious example is the "level" parameter. Oh, I think I get it. What you are saying is that Accept: text/html, image/gif, */*;q=.5 Accept-Charset: iso-8859-5 is a shorthand for Accept: text/html;charset=iso-8859-5, image/gif;charset=iso-8859-5, */*;charset=iso-8859-5;q=.5 but that Accept: text/html, image/gif, */*;q=.5 Accept-Language: en is _NOT_ short for Accept: text/html;language=en, image/gif;language=en, */*;q=.5;language=en because you are not allowed to interpret `language' as a MIME type parameter, you must see it as a variant property completely separate from the MIME type of the variant. >Therefore, you cannot negotiate on a parameter other than charset >without first tying it to the media type which defines it. This is true for parameters to the _MIME type_ of a variant other than charset, but not for parameters (properties) that apply directly do the variant, not the MIME type of the variant. A variant has a - MINE type (which can have parameters) - language - encoding - possibly more properties (like color) that cannot currently be negotiated on We can negotiate on language, encoding, and new things like color just fine, as long as we do not confuse these variant parameters with the parameters to the mime type parameter of the variant. So when generalizing existing and proposed Accept-* headers to one single header, we should not touch Accept-Charset, and only generalize Accept-Encoding, Accept-Language, Accept-Color (proposed), Accept-Cuteness (semi-proposed to prove a point), without ever mentioning MIME type parameters. I'm not going to formally propose such a generalization right now, though I think making this generalization would be a good idea, see some of my previous messages in this thread. Right, now, I want to talk about the structure of the existing Accept header universe. It seems that there are three primary accept headers: Accept for negotiation on MIME type of a variant Accept-Encoding for negotiation on encoding of a variant Accept-Language for negotiation on language of a variant and one extra header Accept-Charset that works as a kind of modifier on the contents of the Accept header. Am I correct so far? Now, these four header names do not reflect the hierarchy of the Accept universe very well, and this is confusing. It is far to easy to incorrectly infer that either a) Accept-Charset, Accept-Encoding, and Accept-Language are all modifiers to the contents of the Accept header or b) Accept-Charset, Accept-Encoding, and Accept-Language all specify variant properties that have nothing to do with the MIME type of the variant. To solve this confusion, we have two options: 1) Rename headers 1a) Old name | New name ----------------+------------ Accept | Accept-Type Accept-Charset | Accept-Type-Charset Accept-Encoding | Accept-Encoding Accept-Language | Accept-Language and maybe define `Accept' as an obsolete form of `Accept-Type', 1b) Old name | New name ----------------+------------ Accept | Accept Accept-Charset | Accept-Charset Accept-Encoding | Want-Encoding Accept-Language | Want-Language (`Want-' above could be replaced by a better word, as long as it is not `Accept-'.) 2) Stop borrowing the `charset' media parameter from the MIME specs, and instead define `charset negotiation' to be completely separate from MIME type negotiation, just like encoding and language negotiation are separate already. HTTP already mutates some of the charset stuff taken from the MIME specs, so defining charset negotiation completely from scratch in the HTTP spec itself does not seem that big a step. Gateways between MIME compliant systems and HTTP already need to do special `charset' conversions anyway. Opinions anyone? Is the confusion serious enough to require fixing? Which fix is the best one? > ....Roy T. Fielding Koen.
Received on Friday, 15 September 1995 04:44:50 UTC