Membedah sisi jaringan microfrontend: mengatur Access-Control-Allow-Origin untuk remote lintas origin, hosting same-origin untuk meminimalkan CORS, header caching immutable, Cross-Origin-Resource-Policy, dan memastikan remote tidak mengekspos API sensitif.

Ketika remote di-deploy ke CDN di origin berbeda (atau path berbeda), kita berhadapan dengan kebijakan same-origin browser dan CORS. Ini salah satu penyebab paling umum microfrontend tiba-tiba "tidak jalan" di produksi padahal di localhost mulus.
Mengapa penting? Karena microfrontend secara alami memuat resource dari banyak origin, dan memahami aturan browser di sini menyelamatkan kalian dari debugging yang menguras waktu. Episode ini membahas CORS, hosting origin, headers, dan keamanan eksposur.
Jika host di app.example.com memuat remote dari cdn.example.com, browser mengirim preflight/CORS check untuk fetch lintas-origin. Server CDN remote harus mengirim header yang benar:
Access-Control-Allow-Origin: https://app.example.comHanya izinkan origin host yang tepercaya, jangan * untuk data sensitif.
Cara paling sederhana menghindari repot CORS: hosting remote di path domain yang sama dengan host — misal host di app.example.com dan remote di app.example.com/remote1/, app.example.com/remote2/. Karena same-origin, tidak ada CORS sama sekali; browser memperlakukan mereka sebagai satu origin.
| Strategi | Origin | CORS |
|---|---|---|
| Cross-origin CDN | host app. + remote cdn. | Butuh CORS headers |
| Same-origin path | app.example.com/remote1/ | Tidak perlu CORS |
Same-origin sangat membantu saat keamanan/operasional network ketat. Trade-off-nya Anda kehilangan isolasi origin penuh.
Cache-Control untuk Hash ChunksUntuk chunk yang namanya ber-content-hash (episode 14), gunakan caching agresif:
Cache-Control: public, max-age=31536000, immutableCross-Origin-Resource-PolicyUntuk melindungi remote publik dari dibaca origin lain yang tidak diinginkan, terapkan CORP:
Cross-Origin-Resource-Policy: same-origin
# atau
Cross-Origin-Resource-Policy: cross-origin # hanya jika memang perlu di-load cross-originCORP membatasi resource mana yang boleh dimuat oleh situs lain — lapisan pertahanan penting saat remote publik di CDN.
Warning
Jangan mencampur Access-Control-Allow-Origin dan CORP secara sembarangan — keduanya bekerja sama di kebijakan browser. Jika CORS mengizinkan (access) tetapi CORP melarang (no-corp), request akan ditolak. Uji kombinasi header di target produksi.
File remote entry hanya boleh berisi kode module — jangan meletakkan secret, token, atau API endpoint internal yang sensitif di dalamnya. Karena remote bisa dibaca siapa pun yang punya URL.
Jangan pernah meletakkan logika autentikasi/permissi penting di client (remote). Auth & otorisasi untuk data sensitif tetap di API gateway server (backend), bukan di JavaScript yang bisa di-inspeksi. Client hanya menampilkan UI; server yang memutuskan akses.
Jika remote di-hosting di CDN publik, pertimbangkan membatasi siapa yang boleh memuatnya:
Referer berasal dari host tepercaya.Referrer whitelist lebih umum karena tidak menyimpan secret di URL.
Pada episode 15 ini, kalian telah memahami networking & cross-origin microfrontend.
Inti yang harus dibawa pulang:
Access-Control-Allow-Origin scoped, bukan *).Cache-Control: immutable untuk chunk hash; terapkan CORP untuk melindungi remote publik.Di episode 16 selanjutnya, kita akan membahas observability frontend multi-app — metrik per remote, error rate & error boundary capture, tracing request, SDK analytics singleton, dan KPI time-to-clickable. Pastikan networking kalian stabil!