CORS

CORS là cơ chế bảo mật giới hạn việc gọi tài nguyên từ domain khác. Tìm hiểu CORS là gì, vì sao xuất hiện lỗi CORS, cách hoạt động và cách xử lý đúng khi gọi API cross-origin.

CORS

CORS là gì?

CORS (viết tắt của Cross-Origin Resource Sharing) là cơ chế bảo mật trong trình duyệt – giới hạn việc truy cập tài nguyên (API, dữ liệu…) từ một website này tới một domain khác.

Nói đơn giản: nếu bạn đang ở domain-a.com, bạn không được phép gọi API từ domain-b.com nếu server của B không cho phép. Đây chính là lý do gây ra lỗi “Blocked by CORS policy”.

Khi nào bị lỗi CORS?

Lỗi CORS xảy ra khi:

  • Bạn gọi fetch/AJAX đến domain khác
  • Server không gửi lại header Access-Control-Allow-Origin
  • Request có kèm token, cookie, hoặc method đặc biệt (PUT, DELETE…) mà server không chấp nhận

Lỗi phổ biến: Access to fetch at 'https://api.domain.com' from origin 'https://yoursite.com' has been blocked by CORS policy

CORS hoạt động như thế nào?

  • Khi trình duyệt thấy bạn gọi API ra ngoài domain hiện tại → nó sẽ gửi Preflight Request (OPTIONS)
  • Server phải phản hồi với các header phù hợp → trình duyệt mới cho phép request tiếp tục
  • Nếu thiếu hoặc sai → browser chặn luôn (mặc định là “deny”)

Các header liên quan đến CORS

Header Ý nghĩa
Access-Control-Allow-Origin Cho phép origin nào truy cập (ví dụ: * hoặc https://abc.com)
Access-Control-Allow-Methods Phương thức được phép (GET, POST, PUT…)
Access-Control-Allow-Headers Các header custom mà client được gửi
Access-Control-Allow-Credentials Cho phép kèm cookie hoặc token xác thực

Cách xử lý lỗi CORS

  • Phía server: Cấu hình cho phép origin cụ thể hoặc toàn bộ (*)
  • Phía client: Không thể “vượt CORS” nếu server không cho phép – chỉ dev phía backend mới xử lý được
  • Trong môi trường local: Dùng proxy để bypass (cấu hình trong Vite, Vue CLI…) hoặc tiện ích browser
  • Trong WordPress: Thêm header bằng PHP hoặc plugin

Ví dụ xử lý CORS bằng PHP

header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
header("Access-Control-Allow-Headers: Content-Type, Authorization");

CORS ảnh hưởng gì đến SEO không?

Không. CORS chỉ hoạt động ở phía trình duyệt. Tuy nhiên nếu bạn dùng JavaScript để render nội dung (client-side), mà bị chặn bởi CORS thì Googlebot cũng có thể không thấy nội dung đó → ảnh hưởng đến khả năng index.

Kết luận

CORS là một lớp bảo mật mặc định trong trình duyệt, giúp bảo vệ người dùng khỏi các cuộc tấn công từ website không đáng tin. Nếu bạn gọi API từ domain khác mà server không cho phép, trình duyệt sẽ chặn lại. Để xử lý, bạn cần cấu hình đúng từ phía server – client không thể “vượt qua” nếu không được cấp phép rõ ràng.

Bình luận


  • Không có bình luận.

Init Toolbox

Nhấn Ctrl + \ trên máy tính, hoặc vuốt sang trái ở bất kỳ đâu trên mobile.

Đăng nhập





Đang tải...