I moved a service from nginx to Traefik 2.9.1 and I can't get it to work on Traefik 2.9.1. The critical part is configuring CORS correctly. In nginx, I just had to add:
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Headers' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Content-Type' 'text/plain; charset=utf-8';
add_header 'Content-Length' 0;
return 204;
}
if ($request_method = 'GET') {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
}
There doesn't seem to be a way to do this with Traefik. Is Traefik just not as flexible as nginx??
This does not work:
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
name: cors-headers
namespace: default
spec:
headers:
accessControlAllowMethods:
- "GET"
- "OPTIONS"
- "PUT"
accessControlAllowHeaders:
- "*"
accessControlAllowOriginList:
- "*"
accessControlAllowCredentials: true