CORS là gì?

BBMCode đã đăng vào lúc 10:07:22 19/07/2024 | đọc khoảng 5 phút, có 835 từ

Định Nghĩa CORS

CORS (Cross-Origin Resource Sharing) là một cơ chế bảo mật của trình duyệt cho phép một trang web yêu cầu tài nguyên từ một miền khác ngoài miền mà trang đó được phục vụ. Nó được thiết kế để ngăn chặn các trang web độc hại truy cập vào tài nguyên của bạn mà không có sự cho phép.

 

Cơ Chế Hoạt Động của CORS

Khi một trang web muốn request tài nguyên từ một miền khác (cross-origin), trình duyệt sẽ thực hiện một số bước kiểm tra bảo mật. Các bước này bao gồm:

 

1. Simple Requests

Đối với các yêu cầu đơn giản (simple requests), trình duyệt sẽ gửi yêu cầu trực tiếp kèm theo một số header CORS. Server phản hồi với các header tương ứng để cho phép hoặc từ chối requests.

Ví dụ về các header:

Request Header: Origin

Response Header: Access-Control-Allow-Origin

 

Nếu server trả về header Access-Control-Allow-Origin với giá trị hợp lệ, trình duyệt sẽ cho phép truy cập tài nguyên.

 

2. Preflight Requests

Đối với các yêu cầu không đơn giản (non-simple requests), trình duyệt sẽ thực hiện một yêu cầu preflight trước khi gửi request chính thức. Yêu cầu preflight là một yêu cầu OPTIONS để kiểm tra xem server có chấp nhận hay không.

 

Ví dụ về các header trong preflight:

Request Header: Origin, Access-Control-Request-Method, Access-Control-Request-Headers

Response Header: Access-Control-Allow-Origin, Access-Control-Allow-Methods, Access-Control-Allow-Headers

 

Nếu server phản hồi chấp nhận các request này, trình duyệt sẽ gửi request chính thức.

 

Các Lỗi Thường Gặp Khi Làm Việc Với CORS

1. No 'Access-Control-Allow-Origin' Header

Đây là lỗi phổ biến nhất khi server không trả về header Access-Control-Allow-Origin. Điều này xảy ra khi server không được cấu hình đúng để cho phép các request cross-origin.

 

2. CORS Policy: No 'Access-Control-Allow-Origin' Header is Present on the Requested Resource

Lỗi này thường xảy ra khi yêu cầu preflight bị từ chối. Điều này có thể do server không cho phép phương thức hoặc header cụ thể nào đó trong request.

 

3. Methods or Headers Not Allowed

Server có thể từ chối một số phương thức HTTP (như PUT, DELETE) hoặc các header tùy chỉnh. Lỗi này xảy ra khi các phương thức hoặc header không được liệt kê trong Access-Control-Allow-Methods hoặc Access-Control-Allow-Headers.

 

4. Credentials Not Allowed

Nếu bạn cần gửi thông tin xác thực (như cookie, HTTP authentication), bạn phải thiết lập Access-Control-Allow-Credentials thành true và server phải phản hồi với Access-Control-Allow-Credentials.

 

Kết Luận

CORS là một cơ chế bảo mật quan trọng trong web development, cho phép các trang web tương tác với nhau một cách an toàn. Hiểu rõ cách CORS hoạt động và cách xử lý các lỗi thường gặp sẽ giúp bạn xây dựng các ứng dụng web mạnh mẽ và bảo mật hơn. Nếu bạn gặp vấn đề với CORS, hãy kiểm tra cấu hình server của bạn và đảm bảo rằng bạn đã thiết lập header đúng.