Công cụ cho lập trình viên

Mã trạng thái HTTP

Tìm theo số hoặc theo tên. Mỗi mã nghĩa là gì và khi nào nên dùng.

Mã trạng thái HTTP Chạy trên thiết bị của bạn
  • Chạy ngay trên trình duyệt của bạn — văn bản của bạn không bao giờ được gửi đi đâu cả
  • Không cần đăng ký, không có hạn mức, dùng miễn phí bao nhiêu lần tùy thích

Cách hoạt động

Phần lớn mã trạng thái đều dễ hiểu và một số ít thực sự gây nhầm lẫn — đặc biệt là những mã nghe giống nhau. Hãy gõ một số, một từ như forbidden, hoặc 4xx để xem cả một nhóm.

401 và 403, cặp mà ai cũng nhầm

401 Unauthorized thực ra nghĩa là chưa xác thực: máy chủ không biết bạn là ai, và gửi thông tin đăng nhập có thể giải quyết được. 403 Forbidden nghĩa là máy chủ biết rõ bạn là ai và bạn vẫn không được phép. Các tên gọi này mang tính lịch sử và không giúp ích gì; sự phân biệt này quan trọng vì một bên mời bạn đăng nhập còn bên kia thì không.

301 so với 302, và vì sao điều này quan trọng với SEO

301 là vĩnh viễn và chuyển các tín hiệu xếp hạng sang địa chỉ mới. 302 là tạm thời và để chúng ở địa chỉ gốc. Dùng 302 cho việc chuyển vĩnh viễn là một sai lầm phổ biến và âm thầm tốn kém. 307 và 308 là các bản hiện đại, đồng thời đảm bảo phương thức không bị thay đổi — POST vẫn là POST, điều mà 301 và 302 trước đây không đảm bảo.

422 cho việc xác thực dữ liệu

400 Bad Request nghĩa là máy chủ hoàn toàn không hiểu được yêu cầu. 422 Unprocessable Content nghĩa là máy chủ hiểu hoàn toàn và nội dung bị sai — thiếu một trường, email không hợp lệ. Phần lớn API nên trả về 422 cho lỗi xác thực dữ liệu nhưng lại trả về 400 theo thói quen.

Các nhóm mã

1xx thông tin, 2xx thành công, 3xx chuyển hướng, 4xx lỗi do phía máy khách, 5xx lỗi do phía máy chủ. Cách chia sau cùng đó là thứ nên dùng để xác định trách nhiệm khi xảy ra sự cố: 4xx tăng vọt nghĩa là bên gọi đang làm sai điều gì đó, 5xx tăng vọt nghĩa là chính bạn đang sai.

418

I'm a teapot, bắt nguồn từ một trò đùa Ngày Cá tháng Tư năm 1998, sau đó được chuẩn hóa nghiêm túc khi một nỗ lực loại bỏ nó khỏi các bản triển khai gây ra phản ứng dữ dội. Nó không dùng trong thực tế, và nó là một phần có thật của đặc tả.

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

Mã trạng thái HTTP — câu hỏi thường gặp

Mã 401 và 403 khác nhau thế nào?

401 nghĩa là chưa xác thực — máy chủ không biết bạn là ai. 403 nghĩa là máy chủ biết bạn là ai và bạn vẫn không được phép.

Nên dùng 301 hay 302?

301 cho việc chuyển vĩnh viễn, giúp chuyển giao thứ hạng. 302 cho việc chuyển tạm thời. Dùng 308 và 307 nếu phương thức HTTP không được thay đổi.

Lỗi xác thực dữ liệu nên trả về mã nào?

422 Unprocessable Content. 400 nghĩa là yêu cầu hoàn toàn không thể hiểu được.

Mã 418 có thật không?

Có. Nó bắt đầu như một trò đùa Ngày Cá tháng Tư năm 1998 và thực sự đã được chuẩn hóa, dù không dùng trong thực tế.

Mã 502 nghĩa là gì?

Một proxy nhận được phản hồi không hợp lệ từ máy chủ phía sau nó — thường là ứng dụng đang ngừng hoạt động hoặc bị lỗi liên tục.