RE: Changes to Content Negotiation, Entity Tags, and If-*

At 02:59 PM 5/28/96 -0700, Paul Leach wrote:
>It seems pretty simple to me: if both Vary: and Alternates: were present
>in a response, then a recipient should get correct behavior if it obeyed
>either one and ignored the other.

Sorry, not convinced.  What does

HTTP/1.1 200 OK
Vary: User-Agent
Alternates: { index.X {type {foo}} {language {bar}}
              index.Y {type {go}}  {encoding {bulls}} }
Content-Location: index.Y


Does it mean given this User-Agent header (and only this User-Agent header),
I then have two plain resources X and Y to choose from?  Are X and Y
servable with different User-Agents if I ignore the Vary header?  Can I
ignore the content-location/Alternates combo and serve the entity Y when I
receive a future request for /index with that user agent?

If you think this is a nonsense example (I do), you may be right, but I'll
bet money someone will try to do this.  People just love their "Netscape
enhanced" pages.

I'd venture to say that ignoring these headers will make 'semantic
tranparency' break.  Including a rule that says Alternates: equates to
"Vary: {accept-headers}" won't.

As far as I'm concerned one Vary: spoils the bunch.  Either you have
Alternates, or you have Vary, not both.  If you really want (server-side)
negotiation that handles both user-agent and accept headers, you should have:

HTTP/1.1 200 OK
Vary: User-Agent, Accept, Accept-Language, Accept-Charset, Accept-Encoding

and then whatever perverse algorithm you have for selecting that right
entity is your business and no one elses.

So what options are we/Roy planning on taking then?  Will we say in a future
draft that "Vary:*"  will occur on all responses with an Alternates:
headers, and that if an Alternates: header is present, the Vary header
should be ignored or produce an error? (I'm for this last clause, but...)
What about the poor 1.1 proxies who don't know about Alternates?  They'll
have tons of "Vary:*" tagged responses that will effectively act like a
must-revalidate.  Not a nice thing to do to a negotiating service provider
who tried to make "wonderful, very-cachable, no-don't-ask-me-you-pick,
transparent" negotiation available to users/proxies.

Daniel DuBois, Software Animal          

Received on Tuesday, 28 May 1996 16:34:13 UTC