418 "Tôi là một ấm trà" có thực sự là một mã phản hồi HTTP không?
Có nhiều tài liệu tham khảo khác nhau về vấn đề này trên internet, bao gồm cả danh sách mã phản hồi, nhưng tôi không thể biết liệu đó có phải là một trò đùa kỳ lạ hay không.
418 "Tôi là một ấm trà" có thực sự là một mã phản hồi HTTP không?
Có nhiều tài liệu tham khảo khác nhau về vấn đề này trên internet, bao gồm cả danh sách mã phản hồi, nhưng tôi không thể biết liệu đó có phải là một trò đùa kỳ lạ hay không.
Câu trả lời:
Tôi sử dụng mã này. Tôi có các yêu cầu ủy quyền ngược nginx tới hai máy chủ HTTP riêng biệt. Một xử lý yêu cầu cho người dùng chưa được xác thực và thứ hai xử lý các yêu cầu cho người dùng đã xác thực. Vấn đề trong trường hợp cụ thể này là máy chủ đầu tiên là máy chủ xác định xem người dùng có được xác thực hay không. Xin đừng hỏi tại sao.
Vì vậy, nếu máy chủ đầu tiên xác định người dùng được xác thực, nó sẽ phản hồi 418 I'm a teapot
. Sau đó, NGINX định tuyến lại lưu lượng truy cập nội bộ đến máy chủ thứ hai. Theo như trình duyệt có liên quan, đó là một yêu cầu duy nhất.
Đây là tinh thần của mã HTCPCP 418 , bởi vì nếu bạn cố gắng BREW với một ấm trà, câu trả lời thích hợp là "Tôi không phải loại có thể xử lý yêu cầu đó, nhưng có thể có những người khác." .. Nói cách khác, "Tôi là một ấm trà. Tìm một máy pha cà phê." (máy chủ thứ hai là máy pha cà phê).
Cuối cùng, mặc dù 418 không được định nghĩa rõ ràng trong RFC 7231 , nhưng nó vẫn được bao phủ bởi ô của 4xx (Client Error)
.
6. Mã trạng thái phản hồi
- 4xx (Lỗi máy khách): Yêu cầu chứa cú pháp sai hoặc không thể thực hiện được
6.5. Lỗi máy khách 4xx
- Loại mã trạng thái 4xx (Lỗi Máy khách) chỉ ra rằng máy khách dường như đã bị lỗi. Ngoại trừ khi phản hồi yêu cầu HEAD, máy chủ NÊN gửi một bản trình bày có chứa giải thích về tình huống lỗi và đó là tình trạng tạm thời hay vĩnh viễn. Các mã trạng thái này có thể áp dụng cho bất kỳ phương thức yêu cầu nào. Tác nhân người dùng NÊN hiển thị bất kỳ đại diện nào được bao gồm cho người dùng.
http
trong Python 3.9.
Mã phản hồi HTTP 418 ban đầu được định nghĩa trong các giao thức RFC 2324 ("Giao thức điều khiển bình cà phê siêu văn bản (HTCPCP / 1.0)") và RFC 7168 ("Giao thức điều khiển bình pha cà phê siêu văn bản cho thiết bị trà Efflux (HTCPCP-TEA)").
Theo Wikipedia: Danh sách mã trạng thái HTTP: # 418
Mã này được định nghĩa vào năm 1998 như một trong những trò đùa truyền thống của IETF Ngày Cá tháng Tư , trong RFC 2324 , Giao thức điều khiển siêu văn bản Coffee Pot , và dự kiến sẽ không được thực hiện bởi các máy chủ HTTP thực tế . RFC chỉ định mã này phải được trả lại bằng ấm được yêu cầu để pha cà phê. Trạng thái HTTP này được sử dụng như một quả trứng Phục sinh trong một số trang web, bao gồm cả Google.com .
Vâng, đó là mã "thực" ở chỗ nó thực sự được xuất bản dưới dạng RFC chính thức bởi Lực lượng đặc nhiệm kỹ thuật Internet, nhưng RFC đó đã được xuất bản vào ngày 1 tháng 4 và có nghĩa là một trò đùa cá tháng tư (cùng với phần còn lại của Hyper Text Coffee Pot Control Giao thức), không phải để thực hiện hợp pháp. Đó là lý do tại sao hầu hết các trang web sử dụng nó như một quả trứng Phục sinh, nhưng nếu không thì hãy tránh nó. Theo ghi nhận của nhận xét này , thường có các trạng thái thích hợp hơn như 400 (Yêu cầu xấu).
Đáng chú ý, theo Larry Masinter (tác giả của RFC do Wikipedia đề cập), phần mở rộng HTTP được đề cập thực sự phục vụ một mục đích (châm biếm): "nó xác định nhiều cách mà HTTP đã được mở rộng không thích hợp."
Tôi nghĩ rằng sẽ an toàn hơn nếu coi 418 như một mã dành riêng đã từng có một nửa - nghĩa chính thức nhưng bây giờ chính thức là "chưa được gán".
Tôi cho rằng, trong lịch sử có điều gì đó đã được nghĩ về những mã này khác với hiện tại. Điều này nghe có vẻ vô nghĩa và buồn cười ngày nay; có lẽ là không?
Nói cách khác, tôi sẽ tránh sử dụng mã này.