Opened 7 years ago

Closed 7 years ago

Last modified 7 years ago

#306 closed defect (fixed)

mime.types outdated

Reported by: aitte.myopenid.com Owned by: Sergey Kandaurov
Priority: minor Milestone:
Component: nginx-core Version: 1.2.x
Keywords: mime mime.types Cc:
uname -a: 2.6.32-279.22.1.el6.x86_64
nginx -V: nginx version: nginx/1.2.7
built by gcc 4.4.4 20100726 (Red Hat 4.4.4-13) (GCC)

Description

/etc/nginx/mime.types delivers .js files as "application/x-javascript"

According to the RFC (http://www.rfc-editor.org/rfc/rfc4329.txt) it should be "application/javascript" and x-javascript is discouraged by the RFC.

That one definitely needs fixing. Other types in mime.types may need fixing too. This is just the one I know of. It may be time to go through the entire list to verify that it's all correct.

Change History (10)

comment:1 by aitte.myopenid.com, 7 years ago

Summary of fixes:

Follow RFC:
application/javascript js;

Add support for WebFonts:
application/vnd.ms-fontobject eot; (http://www.iana.org/assignments/media-types/application/vnd.ms-fontobject)
application/font-woff woff; (http://www.iana.org/assignments/media-types/application/font-woff)
application/x-font-ttf ttf; (this is the most common mime type for this unregistered format)
application/x-font-opentype otf; (same here; this is the most correct type for this unregistered mime type)

Last edited 7 years ago by aitte.myopenid.com (previous) (diff)

comment:2 by aitte.myopenid.com, 7 years ago

I discovered that .eot is currently registered in mime.types as:

application/octet-stream eot;

This is definitely wrong. It's been officially registered as application/vnd.ms-fontobject.

Combine this with the way that javascript was being served with the deprecated application/x-javascript, and I think it's important that the whole file be re-evaluated to make sure it's correct.

The http://www.iana.org/assignments/media-types site will help with official answers for all registered file types. The rest will have to be found via Google to figure out what the correct mime types for them are.

Last edited 7 years ago by aitte.myopenid.com (previous) (diff)

comment:3 by aitte.myopenid.com, 7 years ago

Have a look at the HTML5Boilerplate project; I just discovered that they have an Nginx config sub-project containing the fixes I mentioned and more:

https://github.com/h5bp/server-configs/blob/master/nginx/mime.types

Their config file is good enough that it even deserves to become the official Nginx mime.types file. They're dedicated to doing Best Practices in everything. For instance, the official Nginx mime.types file serves .rss as "application/rss+xml", which is indeed the correct official mime type, but does not work in all browsers. So they went with "application/xml" instead, which is the most widely supported. Their project is full of that kind of attention to detail (their project goal is to do what works best in *every* browser) and is a better mime.types than what's shipped with Nginx.

Last edited 7 years ago by aitte.myopenid.com (previous) (diff)

comment:4 by glebius.myopenid.com, 7 years ago

Several other suggestions to add to mime.types:

text/plain md5 sha1;
archive/xz lzma xz;
binary/tdb-garmin-map tdb;
binary/garmin-style typ;
xml/garmin-track-file gpx;

comment:5 by aitte.myopenid.com, 7 years ago

I discovered that the HTML5 Boilerplate project chose to serve OpenType with this invalid MIME type: "font/opentype". It's not legal ("font/*" is not a valid mime type), but turns out that this is the only way to avoid errors in Google Chrome. All other mime types will make Google Chrome log an error saying that a font was served with an invalid mime type. So yeah, they really take care of the tiniest details over there and it would be a very good idea to look at their project for fixes to your mime.types file.

Version 0, edited 7 years ago by aitte.myopenid.com (next)

comment:6 by Maxim Dounin, 7 years ago

Keywords: mime mime.types added

comment:7 by maxim, 7 years ago

Owner: set to Sergey Kandaurov
Status: newassigned

comment:8 by Sergey Kandaurov <pluknet@…>, 7 years ago

In 010bb2e21f3f9c47469accbc503aed29d7dc5cae/nginx:

MIME: eot MIME type updated to follow IANA (ticket #306).

comment:9 by Sergey Kandaurov, 7 years ago

Resolution: fixed
Status: assignedclosed

comment:10 by Sergey Kandaurov, 7 years ago

.eot and .js were committed some time ago.
Others MIME types are not something to be committed.

Note: See TracTickets for help on using tickets.