Unfortunately on Mac OSX (10.6 at least) Python's
mimetypes.guess_type() function is unable to guess the MIME type for
.htc files (they should be
text/x-component). This is significant because Internet Explorer won't use a behaviour if the
Content-Type header in the response for a
.htc file is incorrect.
Python's
mimetypes.guess_type() has a list of it's own
known MIME types, which is supplemented with records from various external files:
knownfiles = [
"/etc/mime.types",
"/etc/httpd/mime.types", # Mac OS X
"/etc/httpd/conf/mime.types", # Apache
"/etc/apache/mime.types", # Apache 1
"/etc/apache2/mime.types", # Apache 2
"/usr/local/etc/httpd/conf/mime.types",
"/usr/local/lib/netscape/mime.types",
"/usr/local/etc/httpd/conf/mime.types", # Apache 1.2
"/usr/local/etc/mime.types", # Apache 1.3
]
So to fix this problem, you could add the mapping to one of those files, however I opted to add it explicitly to my
settings.py file:
import mimetypes
mimetypes.add_type("text/x-component", ".htc")
Of course, this is only relevant if you're using Django's
manage.py runserver command to serve static files. If you're using Apache you'll need to modify one of the
mime.types file, and if you're using nginx, it should
just work!
The other hassle is that the URL for a behaviour in a CSS file is not relative to the CSS file, it's relative to the URL of the page the browser is rendering. For this reason, I always specify absolute paths, e.g.:
behaviour: url(/static/core/css/PIE.htc);