Re: Imcompatible HTTP/1.0 on different severs

Tony Sanders <>
Message-id: <9307150238.AA05620@austin.BSDI.COM>
Subject: Re: Imcompatible HTTP/1.0 on different severs 
In-Reply-To:'s message of 14 Jul 93 15:59:28 PDT.
Organization: Berkeley Software Design, Inc.
Date: Wed, 14 Jul 1993 21:38:30 -0500
From: Tony Sanders <>
Status: RO
> I have been experimenting with a browser implementation using HTTP/1.0,
> I have found several imcompatiblities between various servers as follows:
>    a) (e.g the BSDI server) Return the HTTP/1.0 header followed by the requested  
>       document.
Speaking for Plexus:
I currently ignore the Accept field though I do plan to use it for format
negotiation in the near future.  However, my feeling is that if a client
doesn't understand the returned type it should offer to dump it to a file
and I prefer to include the actual content-type instead of just tagging
it application/octet-stream so the user might have a clue as to what to
do with it.

What do other people think?  If this is a good idea maybe Tim should
mention this under "tolerating clients/servers".

> 2. The servers supporting HTTP/1.0 return different "Content-type: xxx/yyy"
>    in the HTTP/1.0 header for the same file type.
>    (e.g. BSDI server return "Content-type: image/xbitmap" for bitmap file
>          while HCC server return "Content-type: application/binary".)
>    I personally like the response from the 
>    BSDI server.  The "Content-type: image/xbitmap" is clearer than
>    "Content-type: application/binary". Also, I prefer the BSDI's return of
>    "Content-type: archive/xxx" and "Content-encoding: yyy" for an
>    archive encoded file (eg: .tar.Z) rather than the
>    "application/octect-stream".
Note that application/binary isn't a valid MIME type, it's supposed to be

The MIME people are partially to blame for this mess, a) they should have
defined more common types up front and b) it seems to be a pain to get
new types accepted (I haven't tried but the fact is that not many types
are registered so something must be wrong).

See below for my list of types in case anyone wishes to "standardize" on
what I've dug up (aka seen other people use) OR tell me I'm full of it
and need to fix ones that are "wrong".  I just dug these up (mostly from
NCSA Mosaic and TkWWW plus various postings I've seen) so many may be
wrong and I'm happy to fix them if someone will just tell the most common

> 3. For the servers NOT supporting HTTP/1.0, some of them ignore the HTTP/1.0
>    header and treat the request as HTTP/0.9, but some do NOT ignore and 
>    return an error message. This makes it difficult to switch over to HTTP/1.0.
Yes, that would be annoying, somewhere in the CERN docs it explicitly says
you are supposed to ignore it.


$ext{'ai'}    = $ext{'AI'}    = 'application/postscript';    # Adobe Illustator
$ext{'aiff'}  = $ext{'AIFF'}  = 'audio/x-aiff';
$ext{'au'}    = $ext{'AU'}    = 'audio/basic';
$ext{'cave'}  = $ext{'CAVE'}  = 'image/x-cave';
$ext{'dmp'}   = $ext{'DMP'}   = 'image/x11-dump';
$ext{'dvi'}   = $ext{'DVI'}   = 'application/dvi';
$ext{'eps'}   = $ext{'EPS'}   = 'application/postscript';
$ext{'etx'}   = $ext{'ETX'}   = 'text/setext';
$ext{'evlm'}  = $ext{'EVLM'}  = 'image/x-elvm';
$ext{'gif'}   = $ext{'GIF'}   = 'image/gif';
$ext{'html'}  = $ext{'HTML'}  = 'text/html';
$ext{'jpeg'}  = $ext{'JPEG'}  = 'image/jpeg';
$ext{'jpg'}   = $ext{'JPG'}   = 'image/jpeg';
$ext{'latex'} = $ext{'LATEX'} = 'application/latex';
$ext{'m'}     = $ext{'M'}     = 'text/plain';                # Objective-C
$ext{'mime'}  = $ext{'MIME'}  = 'www/mime';
$ext{'movie'} = $ext{'MOVIE'} = 'video/x-movie';
$ext{'mpeg'}  = $ext{'MPEG'}  = 'video/mpeg';
$ext{'mpg'}   = $ext{'MPG'}   = 'video/mpeg';
$ext{'pbm'}   = $ext{'PBM'}   = 'image/portable-bitmap';
$ext{'pgm'}   = $ext{'PGM'}   = 'image/portable-graymap';
$ext{'pnm'}   = $ext{'PNM'}   = 'image/portable-anymap';
$ext{'ppm'}   = $ext{'PPM'}   = 'image/portable-pixmap';
$ext{'ps'}    = $ext{'PS'}    = 'application/postscript';
$ext{'ras'}   = $ext{'RAS'}   = 'image/cmu-raster';
$ext{'rgb'}   = $ext{'RGB'}   = 'image/x-rgb';
$ext{'rtf'}   = $ext{'RTF'}   = 'application/x-rtf';
$ext{'shar'}  = $ext{'SHAR'}  = 'archive/shar';
$ext{'snd'}   = $ext{'SND'}   = 'audio/basic';
$ext{'src'}   = $ext{'SRC'}   = 'application/x-wais-source';
$ext{'tar'}   = $ext{'TAR'}   = 'archive/tar';
$ext{'tex'}   = $ext{'TEX'}   = 'application/tex';
$ext{'texi'}  = $ext{'TEXI'}  = 'application/texinfo';
$ext{'text'}  = $ext{'TEXT'}  = 'text/plain';
$ext{'tif'}   = $ext{'TIF'}   = 'image/x-tiff';
$ext{'tiff'}  = $ext{'TIFF'}  = 'image/x-tiff';
$ext{'txt'}   = $ext{'TXT'}   = 'text/plain';
$ext{'x11'}   = $ext{'X11'}   = 'image/x11-dump';
$ext{'xbm'}   = $ext{'XBM'}   = 'image/xbitmap';
$ext{'xwd'}   = $ext{'XWD'}   = 'image/xwindowdump';

# MIME Content-encoding: x-compress x-zip x-uuencode
$encoding{'uu'}  = $encoding{'UU'} = 'x-uuencode';
$encoding{'hqx'} = $ext{'HQX'}     = 'x-hqx';                  # Mac compressed
$encoding{'z'}   = 'x-zip';
$encoding{'Z'}   = 'x-compress';