Re: Content negotiation

George Phillips ([email protected])
Wed, 8 Nov 1995 1:59:07 UTC-0800


Instead of putting a URL in the User-agent: field, why not use one as part
of the Accept: information? One of the big problems with the current scheme
is that browsers and their helper apps can handle enough content types that
it takes several KB just to list them. Never mind the many reasonable and
even more unreasonable text/html variations. The extra traffic on slow
lines is a turnoff at best and even caused failed requests at one time
(it may still). On top of all this most of the time it just doesn't matter
because the data is either plain HTML or HTML that works OK on most browsers.
Almost the rest of the time the document is either GIF or JPEG.

I'd leave Accept: as is and let the browsers put in whatever is most
likely (text/html, image/gif, imager/jpeg). 90% of time that is all (or more)
than the server needed to know. Then stuff in an "Accept-URL:" with a
URL that gives the full story on just what the browser can handle.

That URL could point to some highly accessible site, but I'd certainly
rather not have my brower go weird if mother Netscape/Spyglass/Microsoft/etc
is unavailable. A pretty reliable "site" would be the browser itself.
It would keep a port open listening for HTTP Accept: extension requests.
To avoid caching problems you'd want URLs with the browser version in them.
Most browsers would have two paths, one for what it can do at the top level
and one for what image formats can be inlined. Firewalls might be a problem
and you may be tempted to extend the protocol (e.g., have the server send
a query that says "OK browser, pick one of the above types"), but the
basic idea needn't change.

At least with such a scheme there'd be few if any technical arguments to
avoid content-type negotiation and it would handle the common case with
little overhead. Those who really care could cache or whatever to make
it run smoothly. At the worst they could start peeking at the browser
version in the given URL which could be slightly more regular than
User-agent:.