Danh sách tra cứu mã trạng thái HTTP nhanh chóng
Mỗi khi trình duyệt, ứng dụng di động hoặc bot tìm kiếm gửi yêu cầu đến máy chủ web, máy chủ sẽ phản hồi bằng một số có ba chữ số. Các mã trạng thái HTTP này cho client biết chính xác điều gì đã xảy ra: yêu cầu thành công, thất bại, cần xác thực hay cần chuyển hướng sang nơi khác.
Công cụ này cung cấp một từ điển tra cứu đầy đủ các mã phản hồi HTTP chuẩn dựa trên đặc tả RFC chính thức. Vì toàn bộ danh sách được tải và lọc cục bộ ngay trên trình duyệt, việc tìm kiếm diễn ra tức thì. Bạn không cần đợi tải lại trang để tra cứu sự khác biệt giữa mã 301 và 302, hay tìm hiểu xem lỗi 422 có ý nghĩa gì.
5 nhóm mã phản hồi HTTP
Các mã HTTP được chia thành 5 nhóm riêng biệt, xác định bởi chữ số đầu tiên. Hiểu rõ các nhóm này là cách nhanh nhất để chẩn đoán các vấn đề về truy cập web:
1xx (Thông tin)
Các mã này cho biết server đã nhận được yêu cầu và đang tiếp tục xử lý. Đây là các phản hồi tạm thời và client nên đợi phản hồi cuối cùng. Ví dụ: 100 Continue báo cho client cứ tiếp tục gửi request body.
2xx (Thành công)
Mã 2xx có nghĩa là yêu cầu của client đã được nhận, hiểu và chấp nhận thành công. Phổ biến nhất là 200 OK, đây là phản hồi chuẩn cho một yêu cầu HTTP thành công. Khi bạn tạo một bản ghi mới qua API, bạn có thể nhận được mã 201 Created.
3xx (Chuyển hướng)
Các mã này báo cho client biết cần thực hiện thêm thao tác để hoàn tất yêu cầu. Điều này thường có nghĩa là tài nguyên được yêu cầu đã bị di dời. Mã 301 Moved Permanently báo cho các công cụ tìm kiếm cập nhật lại liên kết, trong khi 302 Found cho biết đây chỉ là di dời tạm thời.
4xx (Lỗi Client)
Các mã lỗi HTTP trong dải 4xx có nghĩa là vấn đề nằm ở phía client. Yêu cầu có thể chứa cú pháp sai, thiếu xác thực hợp lệ hoặc truy vấn một tài nguyên không tồn tại. Các lỗi này rất phổ biến khi người dùng gõ sai URL hoặc khi tích hợp API gửi dữ liệu sai định dạng.
5xx (Lỗi Server)
Mã 5xx có nghĩa là server không thể thực hiện một yêu cầu hợp lệ. Client đã làm đúng mọi bước, nhưng server lại gặp sự cố nội bộ, bị sập hoặc đang trong tình trạng quá tải.
Các mã lỗi HTTP phổ biến bạn nên biết
Mặc dù có hàng tá mã lỗi, nhưng chỉ một vài mã chiếm phần lớn các lỗi mà bạn sẽ gặp phải với tư cách là lập trình viên hoặc quản trị viên web:
Mã trạng thái 404 (Không tìm thấy)
Có lẽ là lỗi nổi tiếng nhất trên internet, mã trạng thái 404 có nghĩa là máy chủ không thể tìm thấy tài nguyên được yêu cầu. Đối với chủ sở hữu trang web, việc theo dõi lỗi 404 rất quan trọng cho SEO, vì các liên kết hỏng (broken link) sẽ gây khó chịu cho người dùng và làm lãng phí crawl budget (ngân sách thu thập dữ liệu).
400 Bad Request
Máy chủ không thể xử lý yêu cầu do lỗi từ phía client, chẳng hạn như cú pháp yêu cầu sai hoặc định tuyến không hợp lệ. Các API thường trả về lỗi này khi thiếu một tham số bắt buộc.
401 Unauthorized & 403 Forbidden
Cả hai đều liên quan đến quyền truy cập. Lỗi 401 Unauthorized có nghĩa là client phải xác thực để nhận được phản hồi (ví dụ: thiếu API key). Lỗi 403 Forbidden có nghĩa là danh tính của client đã được biết, nhưng họ không có đủ quyền để truy cập tài nguyên.
500 Internal Server Error
Đây là lỗi chung cho các sự cố từ phía máy chủ (server-side). Nó có nghĩa là máy chủ gặp phải tình trạng không mong muốn khiến nó không thể thực hiện yêu cầu. Khi gặp lỗi 500, bạn thường cần kiểm tra log ứng dụng của máy chủ để tìm nguyên nhân gốc rễ.
502 Bad Gateway & 503 Service Unavailable
Lỗi 502 Bad Gateway xảy ra khi một máy chủ đóng vai trò là proxy (như Nginx hoặc load balancer) nhận được phản hồi không hợp lệ từ máy chủ tuyến trên (upstream server). Lỗi 503 Service Unavailable có nghĩa là máy chủ hiện không thể xử lý yêu cầu, thường là do quá tải hoặc đang tạm ngưng để bảo trì.
Các phương pháp hay nhất khi phát triển API
Khi xây dựng REST API, việc trả về đúng các mã trạng thái HTTP là rất quan trọng để mang lại trải nghiệm tốt cho nhà phát triển. Việc trả về mã 200 OK khi có lỗi thực sự xảy ra (thường gọi là "nuốt" lỗi) buộc client phải tự phân tích nội dung phản hồi (response body) để xác định xem yêu cầu của họ có thực sự thành công hay không.
Hãy sử dụng tài liệu tham khảo này để chọn mã trạng thái chuẩn xác nhất về mặt ngữ nghĩa. Ví dụ: dùng 429 Too Many Requests khi người dùng vượt quá giới hạn số lượng yêu cầu (rate limit), hoặc 422 Unprocessable Content khi payload JSON hợp lệ nhưng không qua được bước kiểm tra logic nghiệp vụ.
Nếu đang tìm hiểu các sự cố định tuyến (routing) của máy chủ, công cụ Kiểm tra DNS của chúng tôi sẽ rất hữu ích để xác minh các bản ghi tên miền, hoặc công cụ Phân tích User-Agent để hiểu rõ hơn về các client đang gửi yêu cầu đến máy chủ của bạn. Nếu bạn muốn quản lý cách các công cụ tìm kiếm thu thập dữ liệu (crawl) trang web của mình để tránh lỗi 404, hãy thử công cụ Tạo file Robots.txt.