Episode ini membahas middleware headers Traefik: custom headers untuk request dan response, rangkaian security headers seperti Content-Security-Policy, X-Frame-Options, X-Content-Type-Options, dan Referrer-Policy, konfigurasi CORS lengkap dengan preflight, serta pengaturan HSTS untuk memaksa HTTPS.

Header HTTP adalah bahasa siluman antara browser dan server. Middleware headers Traefik memberi kalian kendali penuh atas bahasa itu: menambah, menghapus, atau mengganti header di jalur request dan response. Episode 10 membahas middleware ini secara menyeluruh, ditambah dua tema besar: rangkaian security headers dan CORS.
Kenapa ini penting? Banyak serangan web klasik — clickjacking, MIME sniffing, XSS berbasis CSP — dicegah bukan oleh aplikasi, melainkan oleh header yang benar. Memasang security headers di Traefik berarti semua layanan di belakangnya terlindungi sekaligus, tanpa mengubah satu baris kode aplikasi. Inilah nilai proxy sebagai titik kendali terpusat.
Middleware headers punya empat kelompok opsi: customRequestHeaders, customResponseHeaders, serta opsi untuk menghapus keduanya. Konfigurasi middleware headers selalu berada di bawah bagian http.middlewares:
http:
middlewares:
app-headers:
headers:
customRequestHeaders:
X-Source: "traefik-edge"
customResponseHeaders:
X-Powered-By: "Backend Cluster"
Cache-Control: "no-store"
customRequestHeadersRegex:
X-User-{name}: "{value}"customRequestHeaders: ditambahkan ke request sebelum diteruskan ke backend — berguna untuk menandai asal trafik atau menambahkan header yang dibutuhkan backend.customResponseHeaders: ditambahkan ke response sebelum dikirim ke klien.Regex memungkinkan template dinamis dengan capture group dari request.Dua perlindungan lama tapi masih berguna diaktifkan lewat opsi khusus:
http:
middlewares:
old-school-protect:
headers:
customResponseHeaders:
X-XSS-Protection: "1; mode=block"
X-Content-Type-Options: "nosniff"X-Content-Type-Options: nosniff melarang browser menebak-nebak content type (MIME sniffing) — pencegahan penting untuk serangan berbasis file upload.
Rangkaian security headers modern yang direkomendasikan untuk hampir semua layanan web:
http:
middlewares:
secure:
headers:
contentSecurityPolicy: "default-src 'self'; frame-ancestors 'none'"
frameDeny: true
contentTypeNosniff: true
browserXssFilter: true
referrerPolicy: "no-referrer"
permissionsPolicy: "camera=(), microphone=(), geolocation=()"
forceSTSHeader: true
stsSeconds: 31536000
stsIncludeSubdomains: true
stsPreload: truedefault-src 'self' lalu longgarkan sesuai kebutuhan aplikasi.Untuk aplikasi yang tidak memakai header ini sama sekali, menempelkan middleware di atas di setiap router sudah meningkatkan postur keamanan secara signifikan. Pengaturan CSP yang terlalu ketat bisa memecah aplikasi — uji di staging dulu.
CORS (Cross-Origin Resource Sharing) mengatur apakah browser boleh memanggil API kalian dari domain lain. Middleware cors di Traefik mengonfigurasi ini secara terpusat:
http:
middlewares:
api-cors:
headers:
accessControlAllowOriginList:
- "https://app.example.com"
- "https://staging.example.com"
accessControlAllowMethods:
- GET
- POST
- OPTIONS
accessControlAllowHeaders:
- Content-Type
- Authorization
accessControlAllowCredentials: true
accessControlMaxAge: 3600accessControlAllowOriginList: daftar origin yang diizinkan — jangan pernah memakai wildcard bersama credentials.accessControlAllowMethods: method yang diizinkan.accessControlAllowHeaders: header yang boleh dikirim request lintas origin.accessControlAllowCredentials: true: mengizinkan cookie lintas origin.accessControlMaxAge: berapa lama hasil preflight di-cache browser.Untuk request kompleks, browser mengirim request preflight OPTIONS terlebih dahulu. Traefik menangani preflight secara otomatis ketika middleware CORS aktif: jika method dan header cocok dengan konfigurasi, Traefik membalas 204 tanpa meneruskan request ke backend. Ini menghemat beban backend dan mempercepat respons browser.
HSTS (HTTP Strict Transport Security) memberi tahu browser: "mulai sekarang, hanya akses situs ini lewat HTTPS". Ini mencegah serangan downgrade dan SSL stripping. Konfigurasinya sudah terlihat di bagian security headers: stsSeconds adalah durasi kebijakan dalam detik, stsIncludeSubdomains memperluas ke semua subdomain, dan stsPreload mendaftarkan domain ke preload list browser.
Aturan penerapan HSTS yang benar:
stsSeconds kecil, misalnya 300 detik, untuk pengujian.stsPreload setelah yakin — pencabutan dari preload list sangat sulit.Inti yang harus dibawa pulang:
headers mengelola custom headers request dan response.Di episode 11 selanjutnya kita akan membahas path & request middlewares — AddPrefix, StripPrefix, ReplacePath, ReplacePathRegex, RedirectScheme untuk memaksa HTTPS, dan RedirectRegex untuk pengalihan berbasis pola. Middleware inilah yang menyelaraskan URL publik dengan struktur internal aplikasi.