diff --git a/DEPLOY_CORS.md b/DEPLOY_CORS.md index 604522e..d587c16 100644 --- a/DEPLOY_CORS.md +++ b/DEPLOY_CORS.md @@ -27,6 +27,7 @@ CORS_ALLOW_CREDENTIALS=true ``` **Untuk Production (lebih aman):** + ```env # Ganti * dengan domain yang diizinkan CORS_ALLOWED_ORIGINS=https://app.example.com,https://dashboard.example.com @@ -63,6 +64,7 @@ curl -I -H "Origin: http://localhost:3000" https://api.btekno.cloud/health ``` **Harus ada header:** + ``` Access-Control-Allow-Origin: * Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS @@ -86,46 +88,82 @@ curl -X OPTIONS \ Buka browser console (F12) dan jalankan: ```javascript -fetch('https://api.btekno.cloud/health', { - method: 'GET', +fetch("https://api.btekno.cloud/health", { + method: "GET", headers: { - 'Content-Type': 'application/json' - } + "Content-Type": "application/json", + }, }) -.then(res => res.json()) -.then(data => { - console.log('✅ CORS OK:', data); -}) -.catch(err => { - console.error('❌ CORS Error:', err); -}); + .then((res) => res.json()) + .then((data) => { + console.log("✅ CORS OK:", data); + }) + .catch((err) => { + console.error("❌ CORS Error:", err); + }); ``` ## 🔍 Troubleshooting -### Masalah: CORS headers tidak muncul +### Masalah: CORS headers tidak muncul di HTTP response + +**Jika `php bin/test_cors.php` sudah menunjukkan CORS headers muncul, tapi curl/HTTP tidak:** **Solusi:** + +1. **Restart PHP-FPM** (PENTING!): + ```bash + systemctl reload php-fpm-83 # Sesuaikan dengan PHP version + # Atau via aaPanel: Website -> PHP -> Service Management -> Reload + ``` + +2. **Clear PHP Opcache**: + ```bash + php -r "opcache_reset();" + # Atau via aaPanel: Website -> PHP -> Opcache -> Clear Cache + ``` + +3. **Cek apakah code sudah ter-pull**: + ```bash + cd /www/wwwroot/api.btekno.cloud/api + git pull origin main + composer dump-autoload --optimize + ``` + +4. **Test lagi dengan curl**: + ```bash + curl -v -H "Origin: http://localhost/retribusi" https://api.btekno.cloud/health + ``` + +### Masalah: CORS headers tidak muncul sama sekali + +**Jika `php bin/test_cors.php` juga tidak menunjukkan CORS headers:** + +**Solusi:** + 1. Pastikan `CorsMiddleware` sudah di-load di `src/Bootstrap/app.php` ✅ 2. Pastikan `.env` sudah ada konfigurasi CORS ✅ -3. Restart PHP-FPM ✅ -4. Clear browser cache dan coba lagi +3. Pastikan `composer dump-autoload --optimize` sudah dijalankan ✅ +4. Check error log: `tail -f /www/wwwlogs/api.btekno.cloud.error.log` ### Masalah: Preflight OPTIONS return 404 **Solusi:** + - Pastikan routing middleware sudah di-load setelah CORS middleware ✅ - Cek nginx config: pastikan `try_files` mengarah ke `index.php` ### Masalah: CORS hanya work untuk localhost **Solusi:** + - Edit `.env` dan set `CORS_ALLOWED_ORIGINS` dengan domain yang benar - Atau gunakan `*` untuk development (tidak recommended untuk production) ## 📝 Catatan Penting 1. **CORS middleware sudah otomatis handle:** + - Preflight OPTIONS request - CORS headers di semua response - Localhost detection (http://localhost, http://127.0.0.1 dengan port apapun) @@ -135,4 +173,3 @@ fetch('https://api.btekno.cloud/health', { 3. **Untuk production:** Ganti `CORS_ALLOWED_ORIGINS=*` dengan list domain yang spesifik 4. **CORS headers akan muncul di semua endpoint** - termasuk `/health`, `/auth`, `/retribusi`, dll -