Kiểm tra yêu cầu CORS
Gửi yêu cầu cross-origin thật từ trình duyệt tới bất kỳ API nào để xem CORS có cho phép không. Giải thích khi nào cần preflight và hiển thị các header đọc được.
Kiểm tra CORS là gì?
Công cụ kiểm tra CORS này gửi một yêu cầu cross-origin thật từ trình duyệt của bạn – với phương thức, Content-Type, header tùy chỉnh và chế độ credentials do bạn chọn – rồi cho biết trình duyệt có cho phép JavaScript đọc phản hồi hay không. Trước khi gửi, nó giải thích yêu cầu là "đơn giản" hay cần preflight OPTIONS và lý do.
Cách sử dụng Kiểm tra CORS
- Nhập URL của API cần kiểm tra.
- Chọn phương thức, Content-Type (không bắt buộc) và header tùy chỉnh (không bắt buộc) như
Authorization: Bearer x. - Tích ô "Gửi cookie / thông tin xác thực" nếu ứng dụng của bạn dùng credentials: include.
- Đọc phần giải thích về preflight, rồi nhấn Gửi yêu cầu thử.
- Nếu được phép, xem mã trạng thái và các header mà JavaScript đọc được; nếu bị chặn, hãy xem console của trình duyệt để biết lỗi CORS chính xác.
Khi nào nên dùng Kiểm tra CORS
Dùng công cụ để kiểm tra một API công khai có gọi được từ ứng dụng trên trình duyệt không, hoặc để tái hiện lỗi CORS với các header cụ thể. Origin luôn là https://algokit.dev, nên máy chủ chỉ cho phép tên miền của riêng bạn sẽ hiển thị đúng là bị chặn; hãy thử từ chính trang của bạn để có kết quả khớp hoàn toàn. Công cụ không phân biệt được lỗi CORS với lỗi mạng hay lỗi TLS – trình duyệt không tiết lộ điều đó.
Kiểm tra CORS hoạt động như thế nào
Công cụ gọi fetch() với mode: "cors" từ origin của trang (https://algokit.dev), giống hệt cách mã front-end của bạn thực hiện. Phần giải thích preflight tuân theo chuẩn Fetch: phương thức khác GET/HEAD/POST, Content-Type khác form-urlencoded, multipart/form-data hoặc text/plain, hay bất kỳ header tùy chỉnh nào cũng sẽ kích hoạt preflight OPTIONS. Khi trình duyệt chặn một phản hồi, nó ném ra TypeError chung chung và cố ý ẩn nguyên nhân, nên công cụ sẽ nhắc bạn xem console.
Các Trường Hợp Sử Dụng Phổ Biến
- Kiểm tra API bên thứ ba có gửi Access-Control-Allow-Origin không trước khi tích hợp vào SPA.
- Tìm header nào trong yêu cầu của bạn đang kích hoạt preflight.
- Xác minh credentials: include hoạt động (yêu cầu origin cụ thể, không phải *).
- Xem những header phản hồi nào được lộ ra cho JavaScript qua Access-Control-Expose-Headers.
Lưu Ý Bảo Mật
Yêu cầu đi thẳng từ trình duyệt của bạn tới URL bạn nhập; nếu bật credentials, cookie của bạn cho trang đó cũng sẽ được gửi đi.
Câu Hỏi Thường Gặp
Vì sao curl chạy được mà trình duyệt lại lỗi?
CORS chỉ được thực thi bởi trình duyệt. curl và máy chủ bỏ qua nó, nên một API có thể chạy tốt với curl nhưng vẫn không đọc được từ trang web.
Điều gì kích hoạt preflight?
Phương thức khác GET, HEAD hoặc POST, Content-Type không đơn giản như application/json, hoặc bất kỳ header yêu cầu tùy chỉnh nào như Authorization.
Có dùng được Access-Control-Allow-Origin: * cùng cookie không?
Không. Khi có credentials, máy chủ phải trả về chính xác origin và gửi kèm Access-Control-Allow-Credentials: true.