This chapter discusses the MIME types file. The chapter contains the following section:
The MIME types file in the config directory contains mappings between MIME (Multipurpose Internet Mail Extensions) types and file extensions. For example, the MIME types file maps the extensions .html and .htm to the type text/html as follows:
type=text/html exts=htm,html
When the Sun Java System Web Proxy Server receives a request for a resource from a client, it uses the MIME type mappings to determine what kind of resource is being requested.
MIME types are defined by three attributes: language (lang), encoding (enc), and content-type (type). At least one of these attributes must be present for each type. The most commonly used attribute is type. The server frequently considers the type when deciding how to generate the response to the client. The enc and lang attributes are rarely used.
The default MIME types file is named mime.types.
During the ObjectType step in the request handling process, the server determines the MIME type attributes of the resource requested by the client. Several different server application functions (SAFs) can be used to determine the MIME type, but the most commonly used is type-by-extension. This function tells the server to look up the MIME type according to the requested resource’s file extension in the MIME types table.
The directive in obj.conf that tells the server to look up the MIME type according to the extension is:
ObjectType fn=type-by-extension
If the server uses a different SAF, such as force-type, to determine the type, then the MIME types table is not used for that particular request.
For more details of the ObjectType step, see Sun Java System Web Proxy Server 4.0.6 NSAPI Developer’s Guide.
The server considers the value of the type attribute when deciding which Service directive in obj.conf to use to generate the response to the client.
By default, if the type does not start with magnus-internal/, the server sends the requested file to the client. The directive in obj.conf that contains this instruction is:
Service method=(GET|HEAD|POST) type=*~magnus-internal/* fn=send-file
By convention, all values of type that require the server to take an action other than sending the requested resource to the client start with magnus-internal/.
For example, if the requested resource’s file extension is .map, the type is mapped to magnus-internal/imagemap. If the extension is .cgi, .exe, or .bat, the type is set to magnus-internal/cgi:
type=magnus-internal/imagemap exts=map
type=magnus-internal/cgi exts=cgi,exe,bat
|
If the type starts with magnus-internal/, the server executes the Service directive in obj.conf that matches the specified type. For example, if the type is magnus-internal/imagemap, the server uses the imagemap function to generate the response to the client, as indicated by the following directive:
Service method=(GET|HEAD) type=magnus-internal/imagemap fn=imagemap
The Service function generates the data and sends it to the client that made the request. When the server sends the data to the client, it also sends headers. These headers include the MIME type attributes that are known, which is usually type.
When the client receives the data, it uses the MIME type to decide how to handle the data. For browser clients, the usual action is to display the data in the browser window.
If the requested resource cannot be displayed in a browser but needs to be handled by another application, its type starts with application/, for example, application/octet-stream for .bin file extensions or application/x-maker for .fm file extensions. The client has its own set of user-editable mappings that determines which application to use to handle which types of data.
For example, if the type is application/x-maker, the client usually handles it by opening Adobe® FrameMaker to display the file.
The first line in the MIME types file identifies the file format and must read:
#--Sun Microsystems MIME Information
Other non-comment lines have the following format:
type=type/subtype exts=[file extensions]
type/subtype is the type and subtype.
exts are the file extensions associated with this type.
The following example illustrates a MIME types file:
#--Sun Microsystems MIME Information
# Do not delete the above line. It is used to identify the file type.
type=application/octet-stream exts=bin,exe
type=application/oda exts=oda
type=application/pdf exts=pdf
type=application/postscript exts=ai,eps,ps
type=application/rtf exts=rtf
type=application/x-mif exts=mif,fm
type=application/x-gtar exts=gtar
type=application/x-shar exts=shar
type=application/x-tar exts=tar
type=application/mac-binhex40 exts=hqx
type=audio/basic exts=au,snd
type=audio/x-aiff exts=aif,aiff,aifc
type=audio/x-wav exts=wav
type=image/gif exts=gif
type=image/ief exts=ief
type=image/jpeg exts=jpeg,jpg,jpe
type=image/tiff exts=tiff,tif
type=image/x-rgb exts=rgb
type=image/x-xbitmap exts=xbm
type=image/x-xpixmap exts=xpm
type=image/x-xwindowdump exts=xwd
type=text/html exts=htm,html
type=text/plain exts=txt
type=text/richtext exts=rtx
type=text/tab-separated-values exts=tsv
type=text/x-setext exts=etx
type=video/mpeg exts=mpeg,mpg,mpe
type=video/quicktime exts=qt,mov
type=video/x-msvideo exts=avi
enc=x-gzip exts=gz
enc=x-compress exts=z
enc=x-uuencode exts=uu,uue
type=magnus-internal/imagemap exts=map
type=magnus-internal/parsed-html exts=shtml
type=magnus-internal/cgi exts=cgi,exe,bat
type=magnus-internal/jsp exts=jsp
|