comments? MIME types for HTTP

Tony Sanders (sanders@bsdi.com)
Wed, 11 Aug 1993 16:33:38 -0500


Here is a rough draft of a proposal for various MIME type information
to be used with HTTP. Any comments? Hopefully from someone that knows
the MIME standard pretty well and point out conflits (though some are
intentional where I think MIME is broken).

Here are a couple of examples of what it would look like:

Request:
Accept: image/gif; class=color; depth=8;
width=1024; height=768; xdpi=85; ydpi=85

Complex return type:
Content-Type: archive/tar; name="foo.tar"; encoding="compress, uuencode"

<HEAD>
<TITLE>HTTP/1.0 MIME and Client Profile Proposal (rough draft)</TITLE>
</HEAD>
<BODY>
<H1>HTTP/1.0 MIME and Client Profile Proposal</H1>

Here are my proposed values for various types of data. The Client
profile information is data the client can send along with the Accept:
field so the server can better choose the return data type.
For example:
<PRE>
Accept: image/gif; class=color; depth=8;
width=1024; height=768; xdpi=85; ydpi=85
</PRE>

With this additional information the server can try to make better choices
about the data it returns like the Aspect Ratio, image size, color or B&W,
etc. <P>

Types marked with a `*' are standard MIME types: <P>

<PRE>
Content-Type: Description
application/dvi dvi TeX DVI
application/latex latex LaTeX Source
*application/octet-stream bin Uninterpreted Binary Data
*application/postscript ai eps ps PostScript
*application/rtf rtf RTF
application/tex tex TeX Source
application/texinfo texi Texinfo
application/wais-source src WAIS Source
application/troff roff Troff
application/troff-ms ms Troff w/MS Macros
application/troff-me me Troff w/ME Macros
application/troff-man man Troff w/MAN Macros
*application/oda oda
*application/atomicmail Atomicmail
*application/andrew-inset Andrew-inset
*application/slate Slate
*application/wita Wang Info Transfer
*application/dec-dx Digital Doc Transfer
*application/dca-rft IBM Doc Content Arch
*application/activemessage
*application/applefile
*application/mac-binhex40
*application/news-message-id RFC 1036
*application/news-transmission RFC 1036
*application/wordperfect5.1
*application/pdf pdf
*application/zip zip PKZIP
*application/macwriteii
*application/msword
*application/remote-printing RFC 1486
archive/bcpio bcpio Old Binary CPIO
archive/cpio cpio IEEE Std1003.2 (``POSIX'') CPIO
archive/gtar gtar Gnu Tar
archive/shar shar Sh Shar
archive/sv4cpio sv4cpio SVR4 CPIO
archive/sv4crc sv4crc SVR4 CPIO w/CRC
archive/tar tar 4.3BSD Tar
archive/ustar ustar IEEE Std1003.2 (``POSIX'') Tar
audio/aiff aiff
*audio/basic au snd 8-bit u-law [PCM] / 8000 Hz
image/cave cave
image/cmu-raster ras
image/elvm evlm
*image/gif gif Graphics Interchange Format
*image/ief ief Image Exchange Format
*image/jpeg jpeg jpg
image/portable-anymap pnm PBM Anymap Format
image/portable-bitmap pbm PBM Bitmap Format
image/portable-graymap pgm PBM Graymap Format
image/portable-pixmap ppm PBM Pixmap Format
image/rgb rgb
*image/tiff tiff tif Tagged Image File Format
image/xbitmap xbm X Bitmaps
image/xwindowdump xwd X Window Dump (xwd)
text/html html HTML
*text/plain txt Plain Text
*text/richtext rtx MIME Richtext format
text/setext etx Structure Enchanced Text
*text/tab-separated-values tsv Tab Separated Values
video/movie movie
*video/mpeg mpeg mpg Motion Picture Experts Group
*video/quicktime qt QuickTime
www/* Reserved Internal WWW type
*multipart/mixed
*multipart/alternative
*multipart/digest
*multipart/parallel
*multipart/appledouble
*message/rfc822
*message/partial
*message/external-body
*message/news

Common Attributes:
q = quality factor (float between 0 and 1 inclusive)
mxb = max transmission bytes
mxt = max transmission time in seconds
name = document name (this is just a hint for save diaglogs)
type = data type (mostly used with application/octet-stream)
charset = e.g., US-ASCII (ISOXXXX)
language = per ISO standard: e.g., en_US (ISO3316/ISO639)
encoding = Description
hqx hqx Mac Compressed
gzip z Gnu Zip Compressed
zip zip gzip Compressed
compress Z compress'ed
uuencode uu uuencode'ed
btoa btoa btoa'ed

Multiple encodings are possible and should be applied right to left
e.g., foo.tar.Z.uu would be encoded as:
Content-Type: archive/tar; name="foo.tar";
encoding="compress, uuencode"

Extended attributes for all image and video types:
class = gray / color
depth = bitplanes (commonly 1, 4, 8, 16, 24)
width = pixels
height = pixels
xdpi = x dpi
ydpi = y dpi

Extended attributes for audio types:
srates = sample rates (in Hz, e.g., srates="8000,22000")
widths = sample sizes (in bits, e.g., "widths="1,8,16")
</PRE>

I encourage browsers to have MIME type -> action be user definable.
Something like: <P>

<PRE>
image/* xv
video/mpeg mpeg_play
audio/basic audio_play
text/html internal-html
text/* internal-text
*/* internal-save-as
</PRE>

An alternative would be to allow execution from your "save as" dialog
like rn does (e.g., "|patch" does what you would expect). <P>

________________________________________
<ADDRESS><A HREF="/hyplan/sanders.html">Tony Sanders</A></ADDRESS>
</BODY>