Study
Vapor

CORS Middleware

Penjelasan

CORS (Cross-Origin Resource Sharing) adalah mekanisme browser yang membatasi request dari satu domain ke domain lain demi keamanan. Kalau API Vapor-mu diakses oleh aplikasi web frontend yang di-hosting di domain berbeda (mis. frontend di app.contoh.com, API di api.contoh.com), browser akan memblokir response secara default kecuali server API secara eksplisit mengizinkannya lewat header CORS. Vapor menyediakan CORSMiddleware bawaan yang dikonfigurasi dengan CORSMiddleware.Configuration, menentukan allowedOrigin (domain mana saja yang diizinkan), allowedMethods (GET, POST, dst), dan allowedHeaders. Middleware ini didaftarkan di app.middleware.use(...) — biasanya ditaruh PALING AWAL dalam urutan middleware supaya preflight request (OPTIONS) ditangani sebelum middleware lain.

Contoh Konsep

import Vapor

public func configure(_ app: Application) throws {
    let corsConfiguration = CORSMiddleware.Configuration(
        allowedOrigin: .any(["https://app.contoh.com"]),
        allowedMethods: [.GET, .POST, .PUT, .DELETE, .OPTIONS],
        allowedHeaders: [.accept, .authorization, .contentType, .origin]
    )
    let cors = CORSMiddleware(configuration: corsConfiguration)
    app.middleware.use(cors, at: .beginning)
}

Praktikum

Buat CORSMiddleware.Configuration yang mengizinkan origin apa saja (.all), method GET dan POST, dan header .contentType, lalu daftarkan ke app.middleware.use di posisi awal.

Editor Latihan

Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.

Tips

Memakai .all() untuk allowedOrigin memang praktis saat development, tapi di production sebaiknya batasi ke domain frontend yang benar-benar kamu percaya — mengizinkan semua origin membuka celah request lintas domain yang tidak diinginkan.