CORS (Cross-Origin Resource Sharing)
OPTIONS + GET · /api/practice/level5/cors-demo · Chuyên sâu
Mô tả bài tập
Endpoint này cấu hình CORS chỉ cho phép origin 'https://allowed-app.example.com'. Khi gọi từ trình duyệt với origin khác, trình duyệt sẽ tự gửi request OPTIONS (preflight) trước. Dùng curl để tự tay gửi OPTIONS request và quan sát các header Access-Control-Allow-Origin, Access-Control-Allow-Methods trả về.
Mục tiêu học được
- Hiểu preflight request là gì và khi nào trình duyệt tự động gửi nó
- Đọc hiểu các header Access-Control-Allow-Origin / -Methods / -Headers
- Phân biệt lỗi CORS xảy ra ở trình duyệt (không phải do curl/Postman)
💡 Lưu ý: Postman/curl không tự chặn theo CORS như trình duyệt - CORS là cơ chế bảo vệ ở phía trình duyệt, nên bạn vẫn thấy được response ngay cả khi 'origin bị từ chối'.
Lệnh curl
# Gửi preflight request thủ công
curl -i -X OPTIONS "http://testing-api.systemhub.uk/api/practice/level5/cors-demo" \
-H "Origin: https://khong-duoc-phep.example.com" \
-H "Access-Control-Request-Method: GET"
Các bước làm trên Postman
- Tạo request OPTIONS tới http://testing-api.systemhub.uk/api/practice/level5/cors-demo
- Thêm header Origin: https://khong-duoc-phep.example.com
- Gửi và xem response header Access-Control-Allow-Origin (sẽ không khớp origin bạn gửi)
- Đổi Origin thành https://allowed-app.example.com và so sánh kết quả
Đăng nhập để lệnh curl ở trên tự động điền sẵn Practice Token thật của bạn.
🧪 Thử nghiệm trực tiếp
Gọi API ngay tại đây. Nếu bạn đã đăng nhập, tiến độ sẽ được ghi nhận tự động khi gọi đúng như kỳ vọng của bài.
Kết quả
Status: