Tạo & Kiểm tra CORS Header — Sửa lỗi “Blocked by CORS Policy”

Đang gặp “has been blocked by CORS policy”? Hãy mô tả ai được phép gọi API của bạn — origin, phương thức, header, credentials — và nhận ngay các header Access-Control-* dưới dạng code cho Express, Nginx, Apache, Netlify, Vercel, Next.js, Cloudflare Workers hoặc PHP. Sau đó kiểm tra một URL thực tế: công cụ gửi đúng preflight như trình duyệt và giải thích từng header, cho bạn biết request có được phép hay không.

Cập nhật
Cấu hình CORS

Công cụ này lấy URL công khai bạn nhập từ máy chủ của chúng tôi. Kết quả được giữ trong bộ nhớ tạm thời vài phút và không bao giờ được lưu vào cơ sở dữ liệu.

Công cụ này có hữu ích không?0.0 0 lượt đánh giá
Kiểm thử REST API onlineGửi request GET, POST, PUT, PATCH, DELETE với params, header, body JSON và xác thực, xem phản hồi và sao chép dạng cURL.Kiểm thử API →

Cách dùng Tạo & Kiểm tra CORS Header

  1. Ở mục Tạo header, liệt kê các origin được phép gọi API (hoặc chọn cho phép tất cả), đánh dấu các phương thức và nhập header yêu cầu mà front end gửi lên — thường là Content-Type và Authorization.
  2. Chỉ tick Cho phép credentials khi trình duyệt cần gửi cookie hoặc header Authorization với credentials: 'include'.
  3. Chọn nền tảng của bạn và sao chép code — Express, Nginx, Apache, Netlify, Vercel, Next.js, Workers hoặc PHP.
  4. Triển khai, sau đó chuyển sang Kiểm tra URL: nhập URL API và origin của trang để xem preflight và request thực tế có vượt qua hay không.

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

Một trang ở https://app.example.com chỉ đọc được phản hồi từ https://api.example.com khi API cho phép thông qua CORS header. Với mọi request vượt quá GET đơn giản hoặc form POST — như body JSON, header Authorization, PUT hay DELETE — trình duyệt sẽ gửi trước một preflight: một request OPTIONS hỏi “origin này có được dùng phương thức và header này không?”. Nếu câu trả lời thiếu hoặc sai, bạn sẽ thấy lỗi “has been blocked by CORS policy” và code của bạn không bao giờ nhận được phản hồi.

HeaderNội dung cần có
Access-Control-Allow-OriginĐúng origin đang gọi, hoặc * (không dùng được khi có credentials)
Access-Control-Allow-MethodsPhương thức của request thực tế (chỉ dùng cho preflight)
Access-Control-Allow-HeadersMọi header request không chuẩn, ví dụ Authorization hoặc Content-Type: application/json
Access-Control-Allow-Credentialstrue khi có gửi cookie hoặc credentials
Access-Control-Max-AgeTrình duyệt được phép cache kết quả preflight trong bao lâu
Vary: OriginCần thiết khi origin được phép thay đổi theo từng request, để cache không trả kết quả của origin này cho origin khác

Công cụ kiểm tra hoạt động thế nào

Máy chủ của chúng tôi gửi request kèm header Origin và, nếu trình duyệt cần, một preflight OPTIONS với Access-Control-Request-Method và -Headers — giống hệt Chrome hay Firefox. Sau đó, công cụ đối chiếu phản hồi với các quy tắc CORS mà trình duyệt áp dụng. Các máy chủ chỉ cho phép một số địa chỉ IP nhất định hoặc yêu cầu cookie có thể trả lời khác với người dùng thực. Xem thêm: HTTP Header Checker, API Tester, Security Headers Checker.

Cũng được tìm dưới tên: tạo cors header, kiểm tra cors, cors checker, lỗi blocked by cors policy, access-control-allow-origin, cors preflight test, express cors, nginx cors.

Các công cụ dùng kèm tốt với Tạo & Kiểm tra CORS Header

  • Trình tạo CSP — Chọn những gì trang web của bạn tải — script, style, hình ảnh, font, analytics, nhúng — và nhận một Content-Security-Policy chỉ cho phép đúng những thứ đó, kèm cảnh báo cho các cài đặt rủi ro.
  • Chuyển cURL sang Code — Dán lệnh curl từ tài liệu API hoặc “Copy as cURL” trong DevTools của trình duyệt, rồi nhận ngay đoạn code chạy được cho sáu ngôn ngữ, giữ nguyên header, body và thông tin xác thực.
  • Tạo Cấu Hình Nginx — Chọn việc Nginx cần làm — phục vụ site tĩnh hoặc SPA, proxy tới ứng dụng Node/Python, hoặc chạy PHP — rồi đánh dấu các tùy chọn thêm.
  • Phân tích Email Header — Dán header gốc của email để xem toàn bộ hành trình: từng máy chủ trung gian cùng thời gian xử lý, kết quả SPF, DKIM và DMARC, IP gốc, và các dấu hiệu cảnh báo như Reply-To hoặc Return-Path không khớp.

Câu hỏi thường gặp

Làm sao để sửa lỗi “No Access-Control-Allow-Origin header is present”?
API phải gửi Access-Control-Allow-Origin với origin của trang bạn (hoặc *). Tạo cấu hình cho máy chủ của bạn tại đây, triển khai, rồi chạy công cụ kiểm tra để xác nhận. Việc sửa luôn nằm ở máy chủ API, không bao giờ nằm trong code front end.
Vì sao tôi không thể dùng * khi có credentials?
Trình duyệt từ chối Access-Control-Allow-Origin: * khi request có kèm cookie hoặc credentials. Thay vào đó, hãy liệt kê chính xác các origin (hoặc phản hồi lại Origin của request sau khi đã kiểm tra) và gửi Access-Control-Allow-Credentials: true.
Vì sao API của tôi trả về 404 hoặc 405 cho OPTIONS?
Preflight là một request OPTIONS mà các route của bạn có thể chưa xử lý. Nó phải trả về mã 2xx kèm các CORS header — code được tạo ra sẽ trả lời OPTIONS bằng 204.
Cho phép mọi origin có an toàn không?
Với API công khai, chỉ đọc và không dùng cookie, * là ổn. Với mọi thứ có đăng nhập hoặc cookie, chỉ cho phép các origin bạn tin cậy — phản hồi lại mọi origin kèm credentials sẽ cho phép bất kỳ website nào hành động thay người dùng đã đăng nhập của bạn.

Công cụ liên quan