Mã trạng thái phản hồi HTTP
Mã trạng thái phản hồi HTTP cho biết liệu một yêu cầu HTTP cụ thể có được hoàn thành thành công hay không. Các phản hồi được chia thành năm nhóm:
- Phản hồi thông tin (
100–199) - Phản hồi thành công (
200–299) - Thông báo chuyển hướng (
300–399) - Phản hồi lỗi từ phía client (
400–499) - Phản hồi lỗi từ phía server (
500–599)
Các mã trạng thái liệt kê dưới đây được định nghĩa bởi RFC 9110.
Note: Nếu bạn nhận được phản hồi không có trong danh sách này, đó là phản hồi không theo chuẩn, có thể là tùy chỉnh riêng của phần mềm máy chủ.
Phản hồi thông tin
100 Continue-
Phản hồi trung gian này cho biết client nên tiếp tục yêu cầu hoặc bỏ qua phản hồi nếu yêu cầu đã hoàn tất.
101 Switching Protocols-
Mã này được gửi để phản hồi tiêu đề yêu cầu
Upgradetừ client và cho biết giao thức mà máy chủ đang chuyển sang. 102 ProcessingĐã lỗi thời-
Mã này từng được dùng trong ngữ cảnh WebDAV để cho biết rằng máy chủ đã nhận được yêu cầu nhưng chưa có trạng thái sẵn sàng tại thời điểm phản hồi.
103 Early Hints-
Mã trạng thái này chủ yếu được dùng với tiêu đề
Link, cho phép user agent bắt đầu tải trước (preloading) tài nguyên trong khi máy chủ đang chuẩn bị phản hồi hoặc kết nối trước (preconnect) đến nguồn gốc mà trang sẽ cần tài nguyên.
Phản hồi thành công
200 OK-
Yêu cầu đã thành công. Ý nghĩa của "thành công" phụ thuộc vào phương thức HTTP:
201 Created-
Yêu cầu đã thành công và một tài nguyên mới đã được tạo ra. Đây thường là phản hồi gửi sau các yêu cầu
POST, hoặc một số yêu cầuPUT. 202 Accepted-
Yêu cầu đã được nhận nhưng chưa được xử lý. Đây là phản hồi không cam kết, vì không có cách nào trong HTTP để sau đó gửi phản hồi bất đồng bộ cho biết kết quả của yêu cầu. Nó được dùng cho các trường hợp một tiến trình hoặc máy chủ khác xử lý yêu cầu, hoặc cho xử lý theo lô.
-
Mã phản hồi này có nghĩa là metadata được trả về không hoàn toàn giống với những gì có sẵn từ máy chủ gốc, mà được thu thập từ bản sao cục bộ hoặc bên thứ ba. Điều này chủ yếu được dùng cho các bản sao gương hoặc sao lưu của tài nguyên khác. Ngoại trừ trường hợp cụ thể đó, phản hồi
200 OKđược ưu tiên hơn trạng thái này. 204 No Content-
Không có nội dung để gửi cho yêu cầu này, nhưng các tiêu đề vẫn có thể hữu ích. User agent có thể cập nhật các tiêu đề đệm của tài nguyên này với các tiêu đề mới.
205 Reset Content-
Yêu cầu user agent đặt lại tài liệu đã gửi yêu cầu này.
206 Partial Content-
Mã phản hồi này được dùng để phản hồi yêu cầu phạm vi (range request) khi client đã yêu cầu một phần hoặc nhiều phần của tài nguyên.
207 Multi-Status(WebDAV)-
Truyền tải thông tin về nhiều tài nguyên, cho các tình huống mà nhiều mã trạng thái có thể phù hợp.
208 Already Reported(WebDAV)-
Được dùng bên trong phần tử phản hồi
<dav:propstat>để tránh liệt kê lặp lại các thành viên bên trong của nhiều liên kết đến cùng một bộ sưu tập. 226 IM Used(HTTP Delta encoding)-
Máy chủ đã thực hiện yêu cầu
GETcho tài nguyên và phản hồi là biểu diễn kết quả của một hoặc nhiều thao tác thao túng thực thể áp dụng lên thực thể hiện tại.
Thông báo chuyển hướng
300 Multiple Choices-
Trong thương lượng nội dung do tác nhân điều khiển, yêu cầu có nhiều phản hồi có thể và user agent hoặc người dùng nên chọn một trong số đó. Không có cách chuẩn hóa để client tự động chọn một trong các phản hồi, vì vậy điều này hiếm khi được sử dụng.
301 Moved Permanently-
URL của tài nguyên được yêu cầu đã thay đổi vĩnh viễn. URL mới được cung cấp trong phản hồi.
302 Found-
Mã phản hồi này có nghĩa là URI của tài nguyên được yêu cầu đã thay đổi tạm thời. Các thay đổi tiếp theo trong URI có thể được thực hiện trong tương lai, vì vậy client nên sử dụng cùng URI trong các yêu cầu tương lai.
303 See Other-
Máy chủ gửi phản hồi này để hướng dẫn client lấy tài nguyên được yêu cầu tại URI khác bằng yêu cầu
GET. 304 Not Modified-
Được dùng cho mục đích bộ đệm. Nó cho client biết rằng phản hồi chưa được sửa đổi, vì vậy client có thể tiếp tục sử dụng cùng phiên bản đã lưu đệm của phản hồi.
305 Use ProxyĐã lỗi thời-
Được định nghĩa trong phiên bản trước của đặc tả HTTP để chỉ ra rằng phản hồi được yêu cầu phải được truy cập thông qua proxy. Nó đã bị ngừng sử dụng do lo ngại về bảo mật liên quan đến cấu hình proxy trong băng tần.
306 unused-
Mã phản hồi này không còn được sử dụng; nhưng được dành riêng. Nó đã được dùng trong phiên bản trước của đặc tả HTTP/1.1.
307 Temporary Redirect-
Máy chủ gửi phản hồi này để hướng dẫn client lấy tài nguyên được yêu cầu tại URI khác với cùng phương thức đã được dùng trong yêu cầu trước. Điều này có ngữ nghĩa giống như mã phản hồi
302 Found, ngoại trừ user agent không được thay đổi phương thức HTTP đã dùng: nếuPOSTđược dùng trong yêu cầu đầu tiên, thìPOSTphải được dùng trong yêu cầu chuyển hướng. 308 Permanent Redirect-
Điều này có nghĩa là tài nguyên hiện nằm vĩnh viễn tại URI khác, được chỉ định bởi tiêu đề phản hồi
Location. Điều này có ngữ nghĩa giống như mã phản hồi HTTP301 Moved Permanently, ngoại trừ user agent không được thay đổi phương thức HTTP đã dùng: nếuPOSTđược dùng trong yêu cầu đầu tiên, thìPOSTphải được dùng trong yêu cầu thứ hai.
Phản hồi lỗi từ phía client
400 Bad Request-
Máy chủ không thể hoặc sẽ không xử lý yêu cầu do điều gì đó được coi là lỗi từ phía client (ví dụ: cú pháp yêu cầu không đúng định dạng, đóng khung thông điệp yêu cầu không hợp lệ, hoặc định tuyến yêu cầu gian lận).
-
Mặc dù tiêu chuẩn HTTP quy định là "unauthorized" (trái phép), nhưng về mặt ngữ nghĩa phản hồi này có nghĩa là "unauthenticated" (chưa xác thực). Nghĩa là, client phải xác thực bản thân để nhận được phản hồi được yêu cầu.
402 Payment Required-
Mục đích ban đầu của mã này dành cho các hệ thống thanh toán kỹ thuật số, tuy nhiên mã trạng thái này hiếm khi được dùng và không có quy ước chuẩn nào tồn tại.
403 Forbidden-
Client không có quyền truy cập vào nội dung; tức là nó không được phép, vì vậy máy chủ từ chối cung cấp tài nguyên được yêu cầu. Khác với
401 Unauthorized, danh tính của client đã được máy chủ biết đến. 404 Not Found-
Máy chủ không thể tìm thấy tài nguyên được yêu cầu. Trong trình duyệt, điều này có nghĩa là URL không được nhận dạng. Trong API, điều này cũng có thể có nghĩa là endpoint hợp lệ nhưng bản thân tài nguyên không tồn tại. Máy chủ cũng có thể gửi phản hồi này thay vì
403 Forbiddenđể ẩn sự tồn tại của tài nguyên từ client không được phép. Mã phản hồi này có lẽ là nổi tiếng nhất do xuất hiện thường xuyên trên web. 405 Method Not Allowed-
Phương thức yêu cầu được máy chủ biết đến nhưng không được hỗ trợ bởi tài nguyên mục tiêu. Ví dụ, một API có thể không cho phép
DELETEtrên một tài nguyên, hoặc phương thứcTRACEhoàn toàn. 406 Not Acceptable-
Phản hồi này được gửi khi máy chủ web, sau khi thực hiện thương lượng nội dung do máy chủ điều khiển, không tìm thấy nội dung nào phù hợp với các tiêu chí do user agent đưa ra.
407 Proxy Authentication Required-
Tương tự
401 Unauthorizednhưng việc xác thực cần được thực hiện bởi proxy. 408 Request Timeout-
Phản hồi này được gửi trên kết nối không hoạt động bởi một số máy chủ, ngay cả khi không có yêu cầu trước đó từ client. Điều này có nghĩa là máy chủ muốn đóng kết nối không sử dụng này. Phản hồi này được dùng nhiều hơn kể từ khi một số trình duyệt sử dụng cơ chế kết nối trước HTTP để tăng tốc độ duyệt web. Một số máy chủ có thể đóng kết nối mà không gửi thông báo này.
409 Conflict-
Phản hồi này được gửi khi yêu cầu xung đột với trạng thái hiện tại của máy chủ. Trong WebDAV chỉnh sửa web từ xa, các phản hồi
409là lỗi gửi đến client để người dùng có thể giải quyết xung đột và gửi lại yêu cầu. 410 Gone-
Phản hồi này được gửi khi nội dung được yêu cầu đã bị xóa vĩnh viễn khỏi máy chủ, không có địa chỉ chuyển tiếp. Client được kỳ vọng sẽ xóa bộ đệm và liên kết đến tài nguyên. Đặc tả HTTP dự định mã trạng thái này được dùng cho "các dịch vụ khuyến mãi có thời hạn". Các API không nên cảm thấy buộc phải chỉ ra các tài nguyên đã xóa bằng mã trạng thái này.
411 Length Required-
Máy chủ từ chối yêu cầu vì trường tiêu đề
Content-Lengthkhông được định nghĩa và máy chủ yêu cầu nó. 412 Precondition Failed-
Trong yêu cầu có điều kiện, client đã chỉ định các điều kiện trước trong tiêu đề mà máy chủ không đáp ứng.
413 Content Too Large-
Thân yêu cầu lớn hơn giới hạn được định nghĩa bởi máy chủ. Máy chủ có thể đóng kết nối hoặc trả về trường tiêu đề
Retry-After. 414 URI Too Long-
URI mà client yêu cầu dài hơn mức máy chủ sẵn sàng diễn giải.
415 Unsupported Media Type-
Định dạng phương tiện của dữ liệu được yêu cầu không được máy chủ hỗ trợ, vì vậy máy chủ từ chối yêu cầu.
416 Range Not Satisfiable-
Các phạm vi được chỉ định bởi trường tiêu đề
Rangetrong yêu cầu không thể được đáp ứng. Có thể là phạm vi nằm ngoài kích thước dữ liệu của tài nguyên mục tiêu. 417 Expectation Failed-
Mã phản hồi này có nghĩa là kỳ vọng được chỉ ra bởi trường tiêu đề yêu cầu
Expectkhông thể được máy chủ đáp ứng. 418 I'm a teapot-
Máy chủ từ chối pha cà phê bằng ấm trà.
421 Misdirected Request-
Yêu cầu được gửi đến máy chủ không thể tạo ra phản hồi. Điều này có thể được gửi bởi máy chủ không được cấu hình để tạo phản hồi cho tổ hợp scheme và authority có trong URI yêu cầu.
422 Unprocessable Content(WebDAV)-
Yêu cầu có định dạng đúng nhưng không thể thực hiện do lỗi ngữ nghĩa.
423 Locked(WebDAV)-
Tài nguyên đang được truy cập bị khóa.
424 Failed Dependency(WebDAV)-
Yêu cầu thất bại do thất bại của một yêu cầu trước đó.
425 Too EarlyThử nghiệm-
Cho biết rằng máy chủ không sẵn sàng xử lý yêu cầu có thể bị phát lại.
426 Upgrade Required-
Máy chủ từ chối thực hiện yêu cầu bằng giao thức hiện tại nhưng có thể sẵn sàng thực hiện sau khi client nâng cấp lên giao thức khác. Máy chủ gửi tiêu đề
Upgradetrong phản hồi 426 để chỉ ra các giao thức yêu cầu. 428 Precondition Required-
Máy chủ gốc yêu cầu yêu cầu phải có điều kiện. Phản hồi này nhằm ngăn chặn vấn đề 'cập nhật bị mất', trong đó client
GETtrạng thái tài nguyên, sửa đổi nó vàPUTlại cho máy chủ, trong khi đó một bên thứ ba đã sửa đổi trạng thái trên máy chủ, dẫn đến xung đột. 429 Too Many Requests-
Người dùng đã gửi quá nhiều yêu cầu trong một khoảng thời gian nhất định (giới hạn tốc độ).
431 Request Header Fields Too Large-
Máy chủ không sẵn sàng xử lý yêu cầu vì các trường tiêu đề quá lớn. Yêu cầu có thể được gửi lại sau khi giảm kích thước các trường tiêu đề yêu cầu.
-
User agent yêu cầu một tài nguyên không thể được cung cấp hợp pháp, chẳng hạn như trang web bị chính phủ kiểm duyệt.
Phản hồi lỗi từ phía server
500 Internal Server Error-
Máy chủ gặp phải tình huống mà nó không biết cách xử lý. Lỗi này là chung chung, cho biết rằng máy chủ không thể tìm thấy mã trạng thái
5XXphù hợp hơn để phản hồi. 501 Not Implemented-
Phương thức yêu cầu không được máy chủ hỗ trợ và không thể xử lý. Các phương thức duy nhất mà máy chủ được yêu cầu hỗ trợ (và do đó không được trả về mã này) là
GETvàHEAD. 502 Bad Gateway-
Phản hồi lỗi này có nghĩa là máy chủ, trong khi hoạt động như một cổng để nhận phản hồi cần thiết để xử lý yêu cầu, nhận được phản hồi không hợp lệ.
-
Máy chủ chưa sẵn sàng xử lý yêu cầu. Các nguyên nhân phổ biến là máy chủ đang bảo trì hoặc bị quá tải. Lưu ý rằng cùng với phản hồi này, một trang thân thiện với người dùng giải thích vấn đề nên được gửi. Phản hồi này nên được dùng cho các điều kiện tạm thời và tiêu đề HTTP
Retry-After, nếu có thể, nên chứa thời gian ước tính trước khi dịch vụ phục hồi. Quản trị viên web cũng phải lưu ý về các tiêu đề liên quan đến bộ đệm được gửi cùng phản hồi này, vì các phản hồi điều kiện tạm thời này thường không nên được lưu đệm. 504 Gateway Timeout-
Phản hồi lỗi này được đưa ra khi máy chủ đang hoạt động như một cổng và không thể nhận được phản hồi kịp thời.
505 HTTP Version Not Supported-
Phiên bản HTTP được dùng trong yêu cầu không được máy chủ hỗ trợ.
506 Variant Also Negotiates-
Máy chủ có lỗi cấu hình nội bộ: trong quá trình thương lượng nội dung, biến thể được chọn được cấu hình để tự tham gia thương lượng nội dung, dẫn đến tham chiếu vòng tròn khi tạo phản hồi.
507 Insufficient Storage(WebDAV)-
Phương thức không thể được thực hiện trên tài nguyên vì máy chủ không thể lưu trữ biểu diễn cần thiết để hoàn thành yêu cầu thành công.
508 Loop Detected(WebDAV)-
Máy chủ phát hiện vòng lặp vô tận trong khi xử lý yêu cầu.
510 Not Extended-
Yêu cầu của client khai báo một Phần mở rộng HTTP (RFC 2774) nên được dùng để xử lý yêu cầu, nhưng phần mở rộng không được hỗ trợ.
511 Network Authentication Required-
Cho biết rằng client cần xác thực để có được quyền truy cập mạng.