Tra cứu mã trạng thái HTTP: năm nhóm mã và những cặp mã dễ dùng nhầm nhất
Bảng tra 24 mã trạng thái HTTP hay gặp nhất, chia theo năm nhóm và tô màu theo nhóm để nhìn là biết loại. Bạn gõ số mã hoặc tên tiếng Anh vào ô tìm kiếm để lọc ngay, hoặc mở từng thẻ nhóm để xem cả nhóm. Phần nội dung bên dưới đi sâu vào các cặp mã hay bị dùng lẫn trong thực tế.
Tính năng nổi bật
- Bảng tra 24 mã trạng thái thường gặp, chia theo năm nhóm từ 1xx tới 5xx
- Mỗi thẻ mã gồm con số, tên chuẩn tiếng Anh và một dòng giải thích ngắn bằng tiếng Việt
- Tô màu theo nhóm: xanh dương cho 1xx, xanh lá cho 2xx, vàng cho 3xx, cam cho 4xx và đỏ cho 5xx
- Ô tìm kiếm lọc theo cả ba trường là số mã, tên tiếng Anh và phần mô tả
- Năm thẻ nhóm để duyệt lần lượt khi bạn chưa biết chính xác cần tìm mã nào
- Nút sao chép số mã trên từng thẻ, tiện khi cần dán vào mã nguồn hoặc phiếu báo lỗi
- Bố cục dạng lưới hai cột trên điện thoại và bốn cột trên máy tính
- Chạy hoàn toàn trong trình duyệt, không cần mạng sau khi trang đã tải xong
Vì sao chọn đúng mã trạng thái lại quan trọng hơn người ta nghĩ
Mã trạng thái là câu trả lời duy nhất mà máy đọc được trong toàn bộ phản hồi của bạn. Trình duyệt dựa vào nó để quyết định có lưu bộ nhớ đệm hay không, thư viện gọi giao diện lập trình dựa vào nó để quyết định có thử lại hay không, bộ thu thập dữ liệu của công cụ tìm kiếm dựa vào nó để quyết định giữ hay bỏ một địa chỉ khỏi chỉ mục, còn hệ thống giám sát dựa vào nó để quyết định có báo động lúc nửa đêm hay không. Trả sai mã không làm trang hỏng ngay nên lỗi này rất hay tồn tại lâu, nhưng hậu quả thì rất thật: một trang lỗi trả về mã thành công sẽ nằm mãi trong kết quả tìm kiếm, một giao diện lập trình trả mã 200 kèm nội dung báo lỗi sẽ khiến bên gọi không bao giờ thử lại, và một chuyển hướng tạm thời đặt nhầm chỗ sẽ giữ địa chỉ cũ trong chỉ mục hàng tháng trời.
Lợi ích khi sử dụng
- Tra được mã cần tìm trong vài giây mà không phải mở tài liệu kỹ thuật dài
- Nhìn màu là biết ngay lỗi thuộc phía người gửi yêu cầu hay phía máy chủ
- Mô tả viết bằng tiếng Việt nên đọc nhanh hơn tài liệu gốc
- Sao chép được số mã để dán thẳng vào phiếu báo lỗi cho đồng nghiệp
- Dùng được ngoại tuyến sau khi trang đã tải, tiện khi đang xử lý sự cố mạng
Cách tra một mã trạng thái
- 1Gõ số mã vào ô tìm kiếm nếu bạn đã có con số, ví dụ khi đọc nhật ký máy chủ hay bảng công cụ dành cho lập trình viên.
- 2Gõ tên tiếng Anh hoặc một từ trong phần mô tả nếu bạn chỉ nhớ đại ý, vì ô tìm kiếm lọc trên cả ba trường.
- 3Mở thẻ nhóm tương ứng khi bạn muốn xem cả họ mã, chẳng hạn xem hết nhóm 3xx để chọn kiểu chuyển hướng.
- 4Nhìn màu viền để phân biệt nhanh: lỗi phía người gửi yêu cầu màu cam, lỗi phía máy chủ màu đỏ.
- 5Bấm nút sao chép để lấy con số dán vào mã nguồn, phiếu báo lỗi hoặc tài liệu mô tả giao diện lập trình.
Chữ số đầu tiên nói lên tất cả
Mã trạng thái luôn có ba chữ số, và chữ số đầu quyết định cách bên nhận xử lý. Nhóm bắt đầu bằng 1 là phản hồi tạm, nghĩa là máy chủ đã nhận yêu cầu và đang xử lý tiếp, bên gửi cứ chờ. Nhóm bắt đầu bằng 2 là thành công. Nhóm bắt đầu bằng 3 là chuyển hướng, nghĩa là tài nguyên nằm ở địa chỉ khác hoặc bản đang có trong bộ nhớ đệm vẫn dùng được. Nhóm bắt đầu bằng 4 là lỗi từ phía bên gửi yêu cầu, tức yêu cầu sai chứ máy chủ vẫn hoạt động bình thường. Nhóm bắt đầu bằng 5 là lỗi từ phía máy chủ, tức yêu cầu hợp lệ nhưng máy chủ không hoàn thành được. Ranh giới giữa nhóm 4 và nhóm 5 là điều quan trọng nhất trong toàn bộ hệ thống mã, vì nó quyết định ai phải sửa: mã 4xx nghĩa là bên gọi phải sửa yêu cầu, mã 5xx nghĩa là đội vận hành phải vào xem. Bảng tra ở đây liệt kê 24 mã thường gặp, còn danh sách chính thức mà tổ chức quản lý số hiệu Internet duy trì thì dài hơn nhiều.
Bốn mã chuyển hướng và cách chọn cho đúng
Mã 301 là chuyển vĩnh viễn, dùng khi địa chỉ cũ sẽ không bao giờ quay lại, ví dụ đổi tên miền hay đổi cấu trúc đường dẫn. Mã 302 là tạm thời, dùng khi địa chỉ cũ sẽ được khôi phục, ví dụ đưa người dùng sang trang chiến dịch trong hai tuần. Sự khác biệt có hệ quả thật với công cụ tìm kiếm: với chuyển vĩnh viễn, các tín hiệu của địa chỉ cũ dồn về địa chỉ mới và địa chỉ cũ dần biến khỏi chỉ mục; với chuyển tạm thời, địa chỉ cũ vẫn được giữ vì hệ thống hiểu rằng bạn sẽ dùng lại nó. Hai mã 307 và 308 ra đời để sửa một điểm lịch sử: khi gặp 301 hoặc 302, nhiều trình duyệt đổi yêu cầu gửi dữ liệu thành yêu cầu lấy dữ liệu và bỏ mất phần thân, trong khi 307 và 308 bắt buộc giữ nguyên phương thức và phần thân. Vì vậy với trang thường thì 301 và 302 vẫn ổn, còn với các điểm cuối của giao diện lập trình nhận dữ liệu gửi lên thì phải dùng 308 hoặc 307. Ngoài ra hãy giữ chuỗi chuyển hướng càng ngắn càng tốt, tốt nhất là một bước.
401 và 403: chưa biết bạn là ai, hay biết rồi nhưng không cho
Đây là cặp bị dùng lẫn nhiều nhất. Mã 401 nghĩa là yêu cầu thiếu thông tin xác thực hoặc thông tin xác thực không hợp lệ, tức máy chủ chưa biết bạn là ai. Theo đặc tả, phản hồi 401 bắt buộc kèm một tiêu đề chỉ ra cách xác thực mà máy chủ chấp nhận, và đây chính là phần các hệ thống tự viết hay quên. Mã 403 nghĩa là máy chủ đã xác định được danh tính rồi nhưng danh tính đó không có quyền với tài nguyên này, và việc đăng nhập lại cũng không giúp gì. Quy tắc thực dụng để chọn: nếu việc cung cấp thông tin đăng nhập đúng có thể làm yêu cầu thành công thì trả 401, còn nếu không thì trả 403. Có một trường hợp đặc biệt đáng nhớ: khi bạn không muốn tiết lộ rằng tài nguyên đó tồn tại, ví dụ hồ sơ riêng tư của người dùng khác, nhiều hệ thống cố ý trả 404 thay vì 403 để người dò không suy ra được sự tồn tại của tài nguyên qua chính mã trạng thái.
404, 410 và cái bẫy mang tên 404 giả
Mã 404 nghĩa là địa chỉ này hiện không có gì, không nói rõ trước đây có hay không và sau này có hay không. Mã 410 nói mạnh hơn: nội dung từng tồn tại nhưng đã bị xóa vĩnh viễn và sẽ không quay lại. Với công cụ tìm kiếm, cả hai đều dẫn tới việc gỡ địa chỉ khỏi chỉ mục, chỉ khác là tín hiệu dứt khoát của 410 thường khiến quá trình đó diễn ra nhanh hơn. Trường hợp thật sự nguy hiểm là mã 404 giả, tức máy chủ trả về mã 200 báo thành công kèm một trang hiển thị dòng chữ không tìm thấy nội dung. Máy đọc thấy đây là trang hợp lệ nên giữ nó trong chỉ mục, và bạn có thể tích lũy hàng nghìn trang rỗng như vậy mà không hay biết. Lỗi này rất hay xảy ra ở các trang dựng bằng JavaScript, nơi khung trang được trả về trước với mã 200 rồi mới phát hiện không có dữ liệu. Cách kiểm tra là mở bảng công cụ dành cho lập trình viên, xem cột trạng thái của chính tài liệu chứ đừng nhìn nội dung hiển thị trên màn hình.
Nhóm 5xx trong vận hành: 500, 502, 503 và 504 chỉ ra chỗ hỏng khác nhau
Bốn mã này thường xuất hiện trong hệ thống có máy chủ proxy đứng trước ứng dụng, và mỗi mã chỉ về một chỗ hỏng khác nhau. Mã 500 là lỗi chung của chính ứng dụng, thường tương ứng với một ngoại lệ chưa được bắt trong mã nguồn, nên chỗ cần xem là nhật ký của ứng dụng. Mã 502 nghĩa là proxy có kết nối được tới ứng dụng phía sau nhưng nhận về phản hồi không hợp lệ, hoặc ứng dụng đã chết giữa chừng; ở đây nên xem trạng thái tiến trình ứng dụng trước. Mã 504 nghĩa là proxy chờ quá lâu mà ứng dụng không trả lời, nên hoặc là ứng dụng đang xử lý một tác vụ quá nặng, hoặc là ngưỡng chờ đặt quá ngắn. Mã 503 nghĩa là dịch vụ tạm thời không sẵn sàng, dùng khi bảo trì có kế hoạch hoặc khi hệ thống quá tải; đây là mã duy nhất trong nhóm nên đi kèm tiêu đề cho biết bao lâu nữa quay lại, và cũng là mã đúng để dùng khi bạn tắt trang để nâng cấp, thay vì trả về trang trắng với mã 200.
Câu hỏi thường gặp (FAQ)
301 và 302 khác nhau thế nào với công cụ tìm kiếm?
Mã 301 báo chuyển vĩnh viễn, các tín hiệu của địa chỉ cũ dồn về địa chỉ mới và địa chỉ cũ dần biến khỏi chỉ mục. Mã 302 báo tạm thời nên hệ thống giữ lại địa chỉ cũ vì hiểu rằng bạn sẽ dùng lại. Dùng nhầm 302 khi thật ra đã đổi vĩnh viễn là lỗi khiến địa chỉ cũ tồn tại rất lâu trong kết quả tìm kiếm.
Khi nào phải dùng 307 hoặc 308 thay cho 302 và 301?
Khi yêu cầu có phần thân dữ liệu gửi lên, điển hình là các điểm cuối của giao diện lập trình. Vì lý do lịch sử, nhiều trình duyệt gặp 301 hoặc 302 sẽ đổi yêu cầu gửi dữ liệu thành yêu cầu lấy dữ liệu và bỏ mất phần thân, trong khi 307 và 308 bắt buộc giữ nguyên phương thức lẫn phần thân.
Nên trả 401 hay 403?
Quy tắc thực dụng là hỏi xem cung cấp thông tin đăng nhập đúng có làm yêu cầu thành công không. Nếu có thì trả 401 kèm tiêu đề chỉ ra cách xác thực được chấp nhận. Nếu người dùng đã được xác thực nhưng không có quyền và đăng nhập lại cũng vô ích thì trả 403.
404 và 410 khác nhau ra sao?
Mã 404 chỉ nói hiện không có gì ở địa chỉ này. Mã 410 nói nội dung từng tồn tại và đã bị xóa vĩnh viễn. Cả hai đều dẫn tới việc gỡ địa chỉ khỏi chỉ mục tìm kiếm, nhưng tín hiệu dứt khoát của 410 thường khiến quá trình gỡ diễn ra nhanh hơn, nên dùng 410 khi bạn chắc chắn nội dung không quay lại.
404 giả là gì và vì sao nguy hiểm?
Là khi máy chủ trả mã 200 báo thành công nhưng nội dung lại là trang thông báo không tìm thấy. Máy coi đó là trang hợp lệ nên giữ trong chỉ mục, và bạn có thể tích lũy hàng nghìn trang rỗng. Hãy kiểm tra bằng bảng công cụ dành cho lập trình viên, xem mã trạng thái của chính tài liệu chứ không nhìn chữ hiển thị trên màn hình.
Trang bảo trì nên trả mã gì?
Trả 503 kèm tiêu đề cho biết bao lâu nữa quay lại. Cách này báo cho bộ thu thập dữ liệu biết đây là tình trạng tạm thời để chúng quay lại sau thay vì gỡ trang khỏi chỉ mục. Trả trang bảo trì với mã 200 là sai, vì hệ thống sẽ coi nội dung bảo trì đó là nội dung thật của trang.
502 và 504 khác nhau chỗ nào khi xử lý sự cố?
Mã 502 nghĩa là proxy kết nối được tới ứng dụng phía sau nhưng nhận về phản hồi không hợp lệ hoặc ứng dụng chết giữa chừng, nên hãy kiểm tra trạng thái tiến trình ứng dụng trước. Mã 504 nghĩa là proxy chờ quá lâu mà không có trả lời, thường do tác vụ quá nặng hoặc ngưỡng chờ đặt quá ngắn.
Giao diện lập trình nên trả 400 hay 422 khi dữ liệu sai?
Cách phân biệt thông dụng là dùng 400 khi yêu cầu sai về cú pháp, ví dụ chuỗi JSON hỏng hoặc thiếu tham số bắt buộc, và dùng 422 khi cú pháp đúng nhưng nội dung không hợp lệ về mặt nghiệp vụ, ví dụ ngày kết thúc trước ngày bắt đầu. Điều quan trọng hơn là chọn một quy ước rồi ghi rõ trong tài liệu và giữ nhất quán.
Mã 429 nên đi kèm gì?
Nên kèm tiêu đề cho biết sau bao lâu thì gửi lại được, để bên gọi biết chờ đúng khoảng thời gian thay vì thử lại liên tục và làm tình hình nặng thêm. Nhiều hệ thống còn kèm các tiêu đề cho biết hạn mức, số lượt còn lại và thời điểm hạn mức được nạp lại.
Mã 304 hoạt động thế nào?
Trình duyệt gửi kèm thông tin về bản đã lưu trong bộ nhớ đệm, dạng dấu vân nội dung hoặc thời điểm sửa đổi cuối. Nếu máy chủ thấy nội dung không đổi, nó trả 304 mà không kèm phần thân, và trình duyệt dùng lại bản cũ. Nhờ vậy tiết kiệm được toàn bộ băng thông của nội dung mà vẫn đảm bảo bản đang dùng là mới nhất.
Kiểm tra mã trạng thái của một địa chỉ bằng cách nào?
Cách nhanh nhất là mở bảng công cụ dành cho lập trình viên trên trình duyệt, vào thẻ mạng, tải lại trang rồi xem dòng đầu tiên tương ứng với chính tài liệu. Trên máy chủ hoặc khi cần kiểm tra hàng loạt, dùng lệnh dòng lệnh gửi yêu cầu chỉ lấy tiêu đề để đọc mã trả về mà không tải nội dung.
Bảng tra này có đủ toàn bộ mã trạng thái không?
Không. Ở đây là 24 mã gặp thường xuyên nhất trong công việc hằng ngày, chọn lọc để tra cho nhanh. Danh sách chính thức do tổ chức quản lý số hiệu Internet duy trì dài hơn nhiều và còn có các mã dành riêng cho những giao thức mở rộng mà đa số dự án không bao giờ dùng tới.
Từ khóa liên quan
- mã trạng thái http
- http status code là gì
- tra cứu http status code
- lỗi 404 là gì
- 301 và 302 khác nhau
- 307 và 308 redirect
- lỗi 401 và 403 khác nhau
- lỗi 500 internal server error
- lỗi 502 bad gateway
- lỗi 503 service unavailable
- lỗi 504 gateway timeout
- 429 too many requests
- soft 404 là gì
- mã 410 gone
- http 304 not modified
- http 422 unprocessable entity
- chuyển hướng 301 chuẩn seo
- trang bảo trì nên trả mã gì
- kiểm tra status code website
- bảng tra mã lỗi http tiếng Việt
