Công cụ Kiểm tra CORS
Kiểm tra cấu hình Chia sẻ Tài nguyên Nguồn Chéo (CORS) cho bất kỳ URL nào. Kiểm tra các tiêu đề phản hồi Access-Control-*, chạy yêu cầu tiền kiểm (OPTIONS) tùy chọn với Origin/phương thức/tiêu đề tùy chỉnh, và phát hiện các cấu hình sai phổ biến như ký tự đại diện + thông tin xác thực, thiếu Vary: Origin, hoặc allow-headers quá rộng.
Tính năng
- Kiểm tra tiêu đề CORS cho bất kỳ URL công khai nào (Access-Control-* và các tiêu đề liên quan).
- Mô phỏng tiền kiểm tùy chọn (OPTIONS) với Origin, phương thức yêu cầu và tiêu đề yêu cầu tùy chỉnh.
- Theo dõi chuyển hướng (tối đa 10) để bạn xác thực điểm cuối cuối cùng mà trình duyệt thực sự truy cập.
- Xem tiêu đề thô để minh bạch và gỡ lỗi đầy đủ.
- Phát hiện + thẻ điểm với bộ lọc "chỉ vấn đề" để phân loại nhanh.
- Phân tích Vary để phát hiện thiếu Vary: Origin và các cạm bẫy liên quan đến bộ nhớ cache CORS khác.
- Xuất kết quả dưới dạng báo cáo JSON và PDF để kiểm toán, ghi chú và tài liệu.
- Khuyến nghị tích hợp cho các vấn đề phổ biến: ký tự đại diện+thông tin xác thực, phản ánh Origin, Origin null, thiếu allow-methods/allow-headers, thiếu max-age và allow-headers quá rộng.
🧭 Cách sử dụng for cors-checker
Nhập URL mục tiêu
Dán điểm cuối bạn muốn kiểm tra (ví dụ: https://api.example.com/resource).
Đặt Origin bạn đang kiểm tra từ
Nhập Origin của ứng dụng frontend của bạn (scheme + host), ví dụ: https://app.example.com. Đây là giá trị trình duyệt gửi trong tiêu đề Origin.
Chọn chế độ kiểm tra
Sử dụng Tự động (được khuyến nghị) để phân tích cả tiêu đề phản hồi và hành vi tiền kiểm. Sử dụng Yêu cầu đơn giản nếu bạn muốn một kịch bản không tiền kiểm cụ thể, hoặc Chỉ tiền kiểm để chạy kiểm tra OPTIONS.
Cấu hình chi tiết tiền kiểm (nếu áp dụng)
Bật "Chạy Tiền kiểm (OPTIONS)" và đặt Phương thức Yêu cầu cùng với Tiêu đề Yêu cầu (phân cách bằng dấu phẩy) để mô phỏng hành vi tiền kiểm thực tế của trình duyệt (ví dụ: authorization, content-type). Bật "Xem xét thông tin xác thực" nếu trường hợp sử dụng của bạn bao gồm cookie hoặc tiêu đề xác thực.
Xem lại phát hiện và xuất
Kiểm tra các phát hiện/thẻ điểm và chi tiết phân tích CORS. Bật "Hiển thị Tiêu đề Thô" khi gỡ lỗi. Xuất JSON/PDF để chia sẻ hoặc lưu trữ trong kiểm toán.
Thông số kỹ thuật
Mô hình yêu cầu
Công cụ kiểm tra các tiêu đề CORS cho một URL mục tiêu và có thể thực hiện yêu cầu tiền kiểm (OPTIONS) tùy chọn bằng cách sử dụng Origin, phương thức và tiêu đề yêu cầu được cung cấp. Hỗ trợ theo dõi chuyển hướng.
| Cài đặt | Hành vi | Mặc định |
|---|---|---|
| Chế độ Kiểm tra | Tự động, Yêu cầu đơn giản, hoặc Chỉ Preflight | Tự động |
| Chạy Preflight (OPTIONS) | Nếu được bật, thực hiện mô phỏng preflight OPTIONS | Đã bật |
| Nguồn gốc | Giá trị tiêu đề Origin được sử dụng để phân tích/preflight | https://example.com |
| Phương thức Yêu cầu | Giá trị Access-Control-Request-Method cho preflight | GET |
| Tiêu đề Yêu cầu | Access-Control-Request-Headers (phân cách bằng dấu phẩy) cho preflight | Trống |
| Theo dõi Chuyển hướng | Theo dõi chuỗi chuyển hướng đến URL cuối cùng | Đã bật |
| Số lần Chuyển hướng Tối đa | Giới hạn chuyển hướng để ngăn vòng lặp | 10 (phạm vi 0–20) |
| Thời gian chờ | Giới hạn thời gian chờ yêu cầu | 15000 ms |
| User-Agent | Xác định user agent của yêu cầu | Encode64Bot/1.0 (+https://encode64.com) |
| Mạng riêng tư | Chặn truy cập vào các dải mạng riêng tư vì lý do an toàn | Đã tắt (không cho phép mạng riêng tư) |
Tiêu đề được phân tích (bộ CORS cốt lõi)
Trình phân tích tập trung vào các tiêu đề phản hồi và yêu cầu CORS tiêu chuẩn được sử dụng bởi trình duyệt và các kiểm tra preflight.
| Tiêu đề | Mục đích |
|---|---|
| Access-Control-Allow-Origin | Nguồn gốc nào được phép |
| Access-Control-Allow-Credentials | Liệu cookie/thông tin xác thực có được phép hay không (yêu cầu nguồn gốc không phải ký tự đại diện) |
| Access-Control-Allow-Methods | Các phương thức được phép cho yêu cầu cross-origin (quan trọng cho preflight) |
| Access-Control-Allow-Headers | Các header được phép (quan trọng cho Authorization và header tùy chỉnh) |
| Access-Control-Expose-Headers | Header nào có thể đọc được bởi JS trên trình duyệt |
| Access-Control-Max-Age | Thời gian preflight có thể được lưu cache bởi trình duyệt |
| Vary | Biến thể khóa cache (ví dụ: Vary: Origin) để ngăn cache poisoning/trộn lẫn |
| Origin / Access-Control-Request-* | Dùng để mô phỏng hành vi preflight |
Heuristics (các lỗi CORS phổ biến được đánh dấu)
Các phát hiện dựa trên kiểm tra thực tế và hướng bảo mật để phát hiện cấu hình CORS bị hỏng hoặc rủi ro.
| Kiểm tra | Tại sao quan trọng |
|---|---|
| Wildcard + credentials | Access-Control-Allow-Origin: * không thể dùng với credentials; trình duyệt sẽ chặn hoặc hành vi không an toàn |
| Thiếu Vary: Origin | Nếu phản hồi thay đổi theo Origin nhưng không được cache đúng, cache dùng chung có thể trộn lẫn phản hồi giữa các site |
| Phản chiếu Origin | Lặp lại Origin một cách mù quáng có thể vô tình cho phép các origin không đáng tin |
| Cảnh báo Null Origin | Origin: null có thể xuất hiện trong iframe sandbox hoặc ngữ cảnh file; cho phép nó thường rủi ro |
| Thiếu Allow-Methods / Allow-Headers | Preflight có thể thất bại nếu server không cho phép rõ ràng phương thức/header |
| Allow-Headers quá rộng | Cho phép quá nhiều header có thể mở rộng bề mặt tấn công |
| Thiếu Max-Age | Preflight có thể chạy quá thường xuyên, tăng độ trễ |
Dòng lệnh
Sử dụng các lệnh này để tái tạo hành vi CORS và preflight từ terminal của bạn. Chúng hữu ích cho việc gỡ lỗi và xác minh những gì công cụ báo cáo.
macOS / Linux
Kiểm tra header CORS cho yêu cầu thông thường (mô phỏng Origin trình duyệt)
curl -i -H "Origin: https://example.com" https://api.example.com/resourceTìm Access-Control-Allow-Origin, Access-Control-Allow-Credentials và Vary.
Chạy yêu cầu preflight OPTIONS (phương thức + header)
curl -i -X OPTIONS -H "Origin: https://app.example.com" -H "Access-Control-Request-Method: POST" -H "Access-Control-Request-Headers: authorization, content-type" https://api.example.com/privatePreflight phải trả về đúng Access-Control-Allow-Methods và Access-Control-Allow-Headers để trình duyệt tiếp tục.
Theo dõi chuyển hướng trong khi kiểm tra tiêu đề
curl -iL -H "Origin: https://example.com" https://api.example.comHữu ích khi các điểm cuối chuyển hướng đến một máy chủ khác có quy tắc CORS khác.
Windows (PowerShell)
Kiểm tra tiêu đề phản hồi với tiêu đề Origin
$r = Invoke-WebRequest -Uri https://api.example.com/resource -Headers @{ Origin = "https://example.com" }; $r.HeadersHiển thị các tiêu đề Access-Control-* nếu chúng có mặt.
Các trường hợp sử dụng
Gỡ lỗi lỗi trình duyệt "CORS bị chặn" ở frontend
Khi fetch/XHR thất bại với lỗi CORS, hãy xác minh xem máy chủ có trả về các tiêu đề Access-Control-* cần thiết cho Origin và loại yêu cầu của bạn không.
- Xác nhận Access-Control-Allow-Origin khớp với nguồn ứng dụng của bạn
- Nếu sử dụng cookie/xác thực, kiểm tra Access-Control-Allow-Credentials là true (và origin không phải là ký tự đại diện)
- Đảm bảo Vary: Origin có mặt khi cho phép nhiều nguồn
Xác thực yêu cầu preflight cho Authorization / tiêu đề tùy chỉnh
Hầu hết các cuộc gọi API được xác thực sẽ kích hoạt preflight do Authorization hoặc các loại nội dung không đơn giản. Công cụ này giúp đảm bảo các phản hồi OPTIONS cho phép phương thức và tiêu đề cần thiết.
- Xác minh Access-Control-Allow-Methods bao gồm POST/PUT/PATCH/DELETE khi cần
- Xác minh Access-Control-Allow-Headers bao gồm authorization, content-type và các tiêu đề X-* cần thiết
- Phát hiện thiếu allow-methods/allow-headers trước khi triển khai
Đánh giá bảo mật chính sách CORS
Các cấu hình sai CORS có thể vô tình làm lộ API riêng tư cho các trang web độc hại (đặc biệt là với thông tin xác thực). Sử dụng các phát hiện để bắt các mẫu nguy cơ cao.
- Phát hiện origin ký tự đại diện kết hợp với thông tin xác thực
- Phát hiện các mẫu phản chiếu origin cho phép các trang web tùy ý
- Cờ cho phép Origin: null khi không có ý định
Cải thiện hiệu suất bằng cách lưu đệm preflight
Các yêu cầu preflight thêm vòng lặp và độ trễ. Max-Age chính xác có thể giảm các kiểm tra preflight lặp lại cho các API ổn định.
- Xác minh Access-Control-Max-Age có mặt khi phù hợp
- Giảm các cuộc gọi OPTIONS lặp lại cho lưu lượng API thường xuyên
❓ Frequently Asked Questions
❓CORS là gì theo cách đơn giản?
CORS (Chia sẻ Tài nguyên Nguồn gốc Chéo) là một cơ chế bảo mật trình duyệt kiểm soát liệu một trang web từ một nguồn gốc (scheme + host + port) có thể đọc phản hồi từ một nguồn gốc khác hay không. Nó dựa vào các tiêu đề phản hồi Access-Control-* cụ thể.❓Khi nào trình duyệt gửi yêu cầu preflight (OPTIONS)?
❓Tại sao "Access-Control-Allow-Origin: *" lại nguy hiểm với thông tin xác thực?
❓Tại sao tôi cần Vary: Origin?
❓CORS có thể bảo vệ API của tôi khỏi các client không phải trình duyệt không?
CORS được thực thi bởi trình duyệt. Các script chạy bên ngoài trình duyệt (máy chủ, curl, ứng dụng di động) có thể gọi API của bạn bất kể CORS. Hãy sử dụng xác thực, ủy quyền và giới hạn tốc độ để kiểm soát truy cập thực sự.❓Tôi nên đặt gì vào "Request Headers" khi kiểm tra preflight?
❓Có an toàn khi dán URL vào đây không?
Pro Tips
Ưu tiên danh sách cho phép các nguồn gốc đáng tin cậy thay vì phản ánh bất kỳ Origin nào. Coi CORS là cấu hình nhạy cảm về bảo mật.
Nếu bạn sử dụng cookie/xác thực, hãy đặt Access-Control-Allow-Credentials: true VÀ trả về một nguồn gốc rõ ràng (không phải "*").
Thêm Vary: Origin khi cho phép nhiều nguồn gốc hoặc chọn nguồn gốc được phép một cách linh động.
Thêm Access-Control-Max-Age hợp lý để giảm độ trễ preflight cho các API ổn định.
Kiểm tra cả đường dẫn yêu cầu preflight và yêu cầu thực tế; một số thiết lập trả về tiêu đề đúng cho GET nhưng thất bại với OPTIONS.
Xuất báo cáo JSON và lưu chúng cùng với các thay đổi cấu hình API gateway để nhanh chóng phát hiện hồi quy.
Additional Resources
Other Tools
- Bộ Làm Đẹp CSS
- Bộ Làm Đẹp HTML
- Bộ Làm Đẹp Javascript
- Bộ Làm Đẹp PHP
- Bộ Chọn Màu
- Bộ Trích Xuất Sprite
- Bộ Mã Hóa Nhị Phân Base32
- Bộ Giải Mã Base32
- Bộ Mã Hóa Base32
- Bộ Mã Hóa Nhị Phân Base58
- Bộ Giải Mã Base58
- Bộ Mã Hóa Base58
- Bộ Mã Hóa Nhị Phân Base62
- Bộ Giải Mã Base62
- Bộ Mã Hóa Base62
- Bộ Mã Hóa Nhị Phân Base64
- Bộ Giải Mã Base64
- Bộ Mã Hóa Base64
- Bộ Mã Hóa Nhị Phân Hex
- Bộ Giải Mã Hex
- Bộ Mã Hóa Hex
- Bộ Định Dạng Csharp
- Bộ Định Dạng CSV
- Dockerfile Formatter
- Bộ Định Dạng Elm
- Bộ Định Dạng ENV
- Bộ Định Dạng Go
- Bộ Định Dạng GraphQL
- Bộ Định Dạng HCL
- Bộ Định Dạng INI
- Bộ Định Dạng JSON
- Bộ Định Dạng Latex
- Bộ Định Dạng Markdown
- Bộ Định Dạng ObjectiveC
- Php Formatter
- Bộ Định Dạng Proto
- Bộ Định Dạng Python
- Bộ Định Dạng Ruby
- Bộ Định Dạng Rust
- Bộ Định Dạng Scala
- Bộ Định Dạng Tập Lệnh Shell
- Bộ Định Dạng SQL
- Trình Định Dạng SVG
- Trình Định Dạng Swift
- Trình Định Dạng TOML
- Typescript Formatter
- Trình Định Dạng XML
- Trình Định Dạng YAML
- Trình Định Dạng Yarn
- Bộ Thu Nhỏ CSS
- Html Minifier
- Javascript Minifier
- Bộ Thu Nhỏ JSON
- Trình Thu Nhỏ XML
- Cache Headers Analyzer
- Csp Analyzer
- Dns Records Lookup
- Trình Xem Tiêu Đề HTTP
- Http Status Checker
- Open Graph Meta Checker
- Redirect Chain Viewer
- Robots Txt Tester
- Security Headers Checker
- Security Txt Checker
- Sitemap Url Inspector
- Tls Certificate Checker
- PDF Sang Văn Bản
- Bộ Kiểm Tra Regex
- Bộ Kiểm Tra Xếp Hạng SERP
- Tra Cứu Whois