Mã trạng thái HTTP

Các mã hay gặp nhất từ API và CDN. Mã thử nghiệm hiếm được bỏ qua.

Cập nhật:

MãTênÝ nghĩa
200OKThành công, có nội dung
201Đã tạoĐã tạo tài nguyên
204Không có nội dungThành công, nội dung rỗng
301Đã chuyển vĩnh viễnChuyển hướng vĩnh viễn
302Đã tìm thấyChuyển hướng tạm thời
304Không thay đổiDùng bản cache
400Yêu cầu không hợp lệYêu cầu của máy khách không hợp lệ
401Chưa xác thựcCần xác thực / xác thực thất bại
403Bị cấmĐã xác thực nhưng bị từ chối
404Không tìm thấyTài nguyên không tồn tại
405Phương thức không được cho phépPhương thức HTTP sai
408Quá thời gian chờMáy khách quá chậm
409Xung độtXung đột trạng thái
410Đã bị xóaĐã bị xóa vĩnh viễn
422Thực thể không thể xử lýNgữ nghĩa không hợp lệ
429Quá nhiều yêu cầuBị giới hạn tần suất
500Lỗi máy chủ nội bộLỗi phía máy chủ
502Gateway không hợp lệPhản hồi từ máy chủ nguồn không hợp lệ
503Dịch vụ không khả dụngQuá tải hoặc ngừng hoạt động
504Gateway quá thời gian chờMáy chủ nguồn quá thời gian chờ

Ghi chú

Năm nhóm mã trạng thái

Chữ số đầu tiên cho biết ai chịu trách nhiệm và xảy ra chuyện gì sơ bộ. 1xx mang tính thông tin và hiếm khi xuất hiện phía client. 2xx báo thành công — 200 OK kèm nội dung, 204 No Content không kèm nội dung, 206 cho tải từng phần. 3xx báo tài nguyên đang ở nơi khác. 4xx báo yêu cầu sai: cú pháp sai, thiếu xác thực hoặc chạm giới hạn tốc độ. 5xx báo máy chủ gặp sự cố dù yêu cầu hoàn toàn ổn. Chỉ cần đọc chữ số đầu tiên cũng biết nên sửa phía client hay nhờ sự can thiệp phía server.

Chọn đúng loại chuyển hướng

301 và 308 đều mang nghĩa vĩnh viễn; 302 và 307 đều mang nghĩa tạm thời. Khác biệt nằm ở cách xử lý phương thức: 301 và 302 theo thói quen cũ cho phép client đổi POST thành GET, còn 307 và 308 bảo toàn phương thức và thân ban đầu, điều này quan trọng với API và gửi biểu mẫu. Dùng 301 khi URL thực sự đã chuyển đi vĩnh viễn, và dùng 302 hay 307 cho việc định tuyến tạm thời như trang bảo trì hay kiểm tra A/B. Cảnh giác với chuỗi chuyển hướng — mỗi bước lặp thêm đều đội latency và làm mòn giá trị liên kết, vì vậy hãy chuyển hướng thẳng đến đích cuối cùng.

Xử lý lỗi 4xx

401 nghĩa là thiếu hoặc sai xác thực, vì vậy việc gửi thông tin xác thực hợp lệ có thể khắc phục; 403 nghĩa là yêu cầu đã được hiểu và đã xác thực nhưng bị từ chối quyền truy cập, và thử lại với cùng thông tin xác thực sẽ không giúp ích. 404 nghĩa là tài nguyên không tồn tại; 410 báo tài nguyên đã từng tồn tại và đã bị xóa cố ý. 429 nghĩa là bạn đã chạm giới hạn tốc độ và cần lùi lại, tôn trọng header Retry-After nếu có. 400 thường do đầu vào sai định dạng, 405 nghĩa là phương thức không phù hợp với URL đó, và 422 nghĩa là cú pháp hợp lệ nhưng nội dung vi phạm quy tắc kiểm tra.

Đọc mã 5xx

500 là lỗi nội bộ tổng quát; 502 Bad Gateway nghĩa là máy chủ phụ đã trả về kết quả không thể dùng được; 503 nghĩa là dịch vụ tạm ngưng hoạt động hoặc quá tải; 504 nghĩa là máy chủ phụ bị quá thời gian chờ. Đây là vấn đề của máy chủ, không phải của bên gọi, vì vậy cách xử lý là thử lại với cơ chế lùi thời gian, kiểm tra tình trạng máy chủ phụ, hoặc giảm tải. Một CDN có thể phát ra mã 502, 503 hay 504 thay cho origin mà nó không thể chạm tới, đó là lý do cùng một lỗi có thể đến từ hai nguồn rất khác nhau — hãy xem server và header cache-status để xác định chính xác.

Mã trạng thái trong thực tế: API và caching

Hai trường hợp thường nhật deserve sự chú ý. Thứ nhất, caching: 200 kèm header Cache-Control có thể được lưu trữ, 304 Not Modified báo client tái sử dụng bản sao của mình, và mã 5xx thì không nên lưu. Thứ hai, API: một POST tạo tài nguyên mới nên trả về 201 kèm header Location, DELETE thường trả về 204, và PATCH không làm thay đổi gì có thể trả về 200 hoặc 204. Client ứng xử tốt sẽ rẽ nhánh theo nhóm trước (2xx, 4xx, 5xx) rồi mới xét đến mã chính xác, nhờ đó logic thử lại và lùi thời gian trở nên đơn giản và dự đoán được.

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

Mã HTTP 403 nghĩa là gì?
403 nghĩa là máy chủ đã hiểu và xác thực yêu cầu nhưng từ chối cấp quyền truy cập tài nguyên. Khác với 401, đăng nhập lại cũng không giải quyết được.
Redirect HTTP 301 và 302 khác nhau thế nào?
301 là chuyển hướng vĩnh viễn — trình duyệt và công cụ tìm kiếm nên dùng URL mới. 302 là chuyển hướng tạm thời và URL cũ vẫn còn hiệu lực.
HTTP 429 nghĩa là gì và cách xử lý ra sao?
429 nghĩa là bạn đã vượt quá giới hạn tần suất yêu cầu. Hãy giảm tốc độ và tuân thủ header Retry-After nếu máy chủ trả về.

Nguồn