← Tất cả bài viết

CORS là gì và cách cấu hình đúng trong Spring Boot

21/07/2026

CORS (Cross-Origin Resource Sharing) là cơ chế trình duyệt kiểm soát việc trang web ở origin này gọi API ở origin khác. Gần như ai làm frontend gọi backend khác domain đều từng gặp lỗi CORS.

Same-origin policy

Trình duyệt mặc định chặn JavaScript đọc phản hồi từ origin khác (khác về scheme, host hoặc port). CORS là cách server cho phép có chọn lọc origin nào được truy cập.

Preflight request

Với các yêu cầu 'không đơn giản' (method PUT/DELETE, có header tuỳ biến), trình duyệt gửi trước một request OPTIONS để hỏi server có cho phép không, rồi mới gửi request thật. Đây là preflight.

Cấu hình trong Spring Boot

@Configuration
class CorsConfig implements WebMvcConfigurer {
    @Override public void addCorsMappings(CorsRegistry r) {
        r.addMapping("/api/**")
         .allowedOrigins("https://app.example.com")
         .allowedMethods("GET","POST","PUT","DELETE")
         .allowCredentials(true);
    }
}

Đừng bật allow-all bừa bãi

  • Tránh allowedOrigins("*") kết hợp allowCredentials(true) — trình duyệt cấm, và về bản chất là rủi ro bảo mật
  • Liệt kê tường minh origin được phép thay vì mở toàn bộ
  • CORS là kiểm soát ở trình duyệt, không thay thế xác thực/uỷ quyền phía server

👉 Dùng thử công cụ liên quan trên dev-hub: JSON Formatter — chạy hoàn toàn trong trình duyệt, không gửi dữ liệu lên server.