MIME type mapping
This page explains how MIME types (media types, content types) are mapped to file extensions in Magnolia.
Configuration
MIME types are configured in config:/server/MIMEMapping
. You can edit them with the Configuration app.
Example: The MIME type text/html
is mapped to extension html
. The type application/x-javascript
is mapped to extension js
.
The example above shows just two types. Magnolia configures many more MIME types by default.
Property | Description |
---|---|
|
required Parent node name such as |
|
required MIME type for the given file extension. See Official Media Types List. |
|
optional File extension. If not set, |
ContentTypeFilter
info.magnolia.cms.filters.ContentTypeFilter is a filter in the Magnolia filter chain.
ContentTypeFilter does not set the response content type, instead it’s the responsibility of renderers/servlets to set correct content type (for instance, info.magnolia.rendering.renderer.FreemarkerRenderer sets the content type). However, ContentTypeFilter sets some parameters onto info.magnolia.cms.core.AggregationState and takes care of restricting responses to configured MIME types and matching requests to content types.
Restricting responses to configured MIME types
By default, Magnolia tries to respond to every request, even if the MIME type is not configured. To restrict responses to configured MIME types only, add a registeredExtensionsOnly
property to the contentType
filter configuration:
When registeredExtensionsOnly
is true
Magnolia will respond with response code 400 to requests with extensions that are not registered in MIMEMapping.
If the request has no extension, Magnolia assumes it is html
.
Matching requests to content types
You can restrict responses to match content types with the
validateContentType
property.
Example: If you request https://demopublic.magnolia-cms.com/travel.c
,
the HTML source is returned because of the text/plain
MIME mapping in /server/MIMEMapping/c
To force content type matching, add the validateContentType
property
in server/filters/contentType
and set the value to true
.
When the validateContentType
property is set to true
, Magnolia will
respond with
response code
400 if the requested extension does not match the content type. This
property essentially disables all unknown extensions.