ContentType
Handling Content-Type auto-detection
The Content-Type middleware - or rather its autoDetect
option - specifies whether to let the Content-Type
header, if it has not been defined by the backend, be automatically set to a value derived from the contents of the response.
As a proxy, the default behavior should be to leave the header alone, regardless of what the backend did with it. However, the historic default was to always auto-detect and set the header if it was not already defined, and altering this behavior would be a breaking change which would impact many users.
This middleware exists to enable the correct behavior until at least the default one can be changed in a future version.
Info
As explained above, for compatibility reasons the default behavior on a router (without this middleware), is still to automatically set the Content-Type
header. Therefore, given the default value of the autoDetect
option (false), simply enabling this middleware for a router switches the router’s behavior.
The scope of the Content-Type middleware is the MIME type detection done by the core of Traefik (the server part). Therefore, it has no effect against any other Content-Type
header modifications (e.g.: in another middleware such as compress).
Configuration Examples
Docker
# Disable auto-detection
labels:
- "traefik.http.middlewares.autodetect.contenttype.autodetect=false"
Kubernetes
# Disable auto-detection
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
name: autodetect
spec:
contentType:
autoDetect: false
Consul Catalog
# Disable auto-detection
- "traefik.http.middlewares.autodetect.contenttype.autodetect=false"
Marathon
"labels": {
"traefik.http.middlewares.autodetect.contenttype.autodetect": "false"
}
Rancher
# Disable auto-detection
labels:
- "traefik.http.middlewares.autodetect.contenttype.autodetect=false"
File (YAML)
# Disable auto-detection
http:
middlewares:
autodetect:
contentType:
autoDetect: false
File (TOML)
# Disable auto-detection
[http.middlewares]
[http.middlewares.autodetect.contentType]
autoDetect=false
Configuration Options
autoDetect
autoDetect
specifies whether to let the Content-Type
header, if it has not been set by the backend, be automatically set to a value derived from the contents of the response.