Penguji CORS
Uji dan nyahpepijat dasar CORS (Cross-Origin Resource Sharing) dan permintaan API
Apa itu CORS? CORS (Cross-Origin Resource Sharing) adalah mekanisme yang membenarkan pelayar web membuat permintaan lintas asal (domain, protokol, atau port yang berbeza) dari skrip yang berjalan dalam pelayar.
Pengepala CORS Utama
Access-Control-Allow-Origin
: Menentukan asal yang dibenarkan untuk mengakses sumberAccess-Control-Allow-Methods
: Menentukan kaedah HTTP yang dibenarkanAccess-Control-Allow-Headers
: Menentukan pengepala HTTP yang boleh digunakanAccess-Control-Allow-Credentials
: Menentukan sama ada untuk memasukkan kelayakan (kuki, pengesahan HTTP)
๐ก Penyelesaian CORS
Penyelesaian Sisi Pelayan
1. Express.js (Node.js):
const cors = require('cors'); app.use(cors({ origin: 'https://example.com', methods: ['GET', 'POST'], credentials: true }));
2. Spring Boot (Java):
@CrossOrigin(origins = "https://example.com") @RestController public class ApiController { ... }
Penyelesaian Sisi Klien
1. Menggunakan Pelayan Proksi:
// package.json (React) "proxy": "http://localhost:3001"
2. JSONP (GET sahaja):
// Penyelesaian terhad tetapi mudah fetch('api?callback=handleResponse')
๐ง Konfigurasi CORS mengikut Persekitaran
Next.js
// next.config.js module.exports = { async headers() { return [ { source: '/api/:path*', headers: [ { key: 'Access-Control-Allow-Origin', value: '*' } ] } ] } }
Nginx
location /api { add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Methods "GET, POST, OPTIONS"; add_header Access-Control-Allow-Headers "Content-Type, Authorization"; }
Apache
# .htaccess Header always set Access-Control-Allow-Origin "*" Header always set Access-Control-Allow-Methods "GET, POST, OPTIONS" Header always set Access-Control-Allow-Headers "Content-Type, Authorization"
Konfigurasi CORS mengikut Persekitaran
Senario Ujian
- โข Permintaan Mudah: Uji tingkah laku CORS asas dengan permintaan GET
- โข Permintaan Pra-penerbangan: Uji permintaan pra-penerbangan dengan kaedah PUT/DELETE
- โข Pengepala Tersuai: Uji permintaan dengan pengepala Kebenaran
- โข Kelayakan: Uji permintaan dengan kuki
- โข Pengendalian Ralat: Uji senario kegagalan
Pertimbangan Keselamatan
- โข Berhati-hati dengan penggunaan wildcard (*) kerana risiko keselamatan
- โข Prinsip keistimewaan paling rendah: Hanya benarkan asal dan kaedah yang diperlukan
- โข Sekatan kelayakan: Hanya benarkan asal tertentu apabila memasukkan kelayakan
- โข Semakan berkala: Semak dan kemas kini dasar CORS secara berkala
Petua Nyahpepijat CORS
Alat Pembangun Pelayar
- โข Semak permintaan OPTIONS dalam tab Rangkaian
- โข Cari mesej ralat CORS dalam Konsol
- โข Sahkan pengepala CORS dalam Pengepala Respons
Alat Berguna
- โข Penguji CORS (alat ini)
- โข Postman (untuk pengujian API)
- โข arahan curl (untuk pengujian pelayan langsung)