← Bài viết

HTTP FIELD GUIDE

CORS và yêu cầu HTTP từ trình duyệt

Hiểu vì sao cURL hoạt động nhưng yêu cầu tương tự từ trang web lại thất bại.

Vì sao trình duyệt chặn?

Trang web tuân theo chính sách cùng nguồn. Với fetch khác nguồn, máy chủ đích phải cấp quyền bằng tiêu đề CORS. Một số phương thức và tiêu đề làm trình duyệt gửi yêu cầu OPTIONS kiểm tra trước. Nếu bước này thất bại, yêu cầu thật có thể chưa hề được gửi.

cURL khác gì?

cURL không chịu quy tắc CORS của trình duyệt. Lệnh terminal thành công chỉ chứng minh máy đó truy cập được điểm cuối, không chứng minh trang web đọc được phản hồi. Trình duyệt còn kiểm soát Host, Cookie và có thể chặn HTTP không an toàn từ trang HTTPS.

Cách kiểm tra

Trong bảng Network, xem yêu cầu kiểm tra trước, Origin và tiêu đề phản hồi. Đối chiếu Access-Control-Allow-Origin cùng phương thức, tiêu đề được cho phép. no-cors không phải cách khắc phục: phản hồi trở nên opaque, không đọc được trạng thái và nội dung. Nếu API không bật CORS, hãy dùng máy khách cục bộ đáng tin hoặc relay được bảo vệ.

Tài liệu tham khảo