Same-Origin Policy chặn fetch/XHR đọc dữ liệu cross-origin; CORS là cơ chế server dùng HTTP header để cho phép origin khác đọc.
- Simple request (GET/HEAD/POST +
Content-Typesafelisted): không có preflight. - Preflighted: khi dùng method khác, custom header, hoặc
Content-Type: application/json→ trình duyệt gửiOPTIONStrước kèmAccess-Control-Request-Method/-Headers; server phải trảAccess-Control-Allow-Origin/-Methods/-Headers.
Lỗi CORS thường gặp:
- Thiếu Access-Control-Allow-Origin.
- Dùng * khi request có credentials — phải ghi origin cụ thể + Access-Control-Allow-Credentials: true.
- Preflight bị từ chối (OPTIONS không trả 2xx).
Lưu ý: CORS do trình duyệt thực thi — không phải cơ chế bảo vệ server.