Thông báo lỗi HTTP 418 I'm a teapot
(developer.mozilla.org)- HTTP 418
I'm a teapotlà mã phản hồi trạng thái cho biết máy chủ từ chối pha cà phê vì nó vĩnh viễn là một ấm trà - Nếu đó là trường hợp ấm đun kết hợp cà phê/trà tạm thời không thể phục vụ cà phê, thì không phải 418 mà phải trả về
503 Service Unavailable - Mã này là một trò đùa Cá tháng Tư xuất phát từ Hyper Text Coffee Pot Control Protocol, gắn với các giao thức được định nghĩa vào năm 1998 và 2014
- Ban đầu đây là mã đùa trong RFC 2324, nhưng vì đã được triển khai rộng rãi nên được RFC 9110 chính thức dành riêng
- Một số website dùng 418 cho các yêu cầu mà họ không muốn xử lý như truy vấn tự động, và trong tương lai gần mã này không thể được gán một ý nghĩa không mang tính đùa vui
HTTP 418 biểu thị tình huống gì
- Mã phản hồi trạng thái
418 I'm a teapotcó nghĩa là máy chủ từ chối pha cà phê - Lý do từ chối là vì máy chủ vĩnh viễn là một ấm trà
- Nếu là ấm đun kết hợp cà phê/trà tạm thời không thể phục vụ cà phê thì phải trả về
503
Mã bắt nguồn từ giao thức trò đùa Cá tháng Tư
- Mã trạng thái này tham chiếu đến Hyper Text Coffee Pot Control Protocol
- Giao thức này được định nghĩa như một trò đùa Cá tháng Tư vào các năm 1998 và 2014
- 418 ban đầu là mã được định nghĩa như một trò đùa Cá tháng Tư trong RFC 2324
Vì sao được dành riêng trong RFC 9110
- Mã trạng thái 418 đã được triển khai rộng rãi như một trò đùa nên được RFC 9110 chính thức dành riêng
- Vì việc dành riêng này, trong tương lai gần không thể gán cho 418 một ý nghĩa không mang tính đùa vui
Cách được sử dụng trong thực tế
- Một số website dùng phản hồi 418 cho các yêu cầu mà họ không muốn xử lý
- Ví dụ tiêu biểu là các yêu cầu như truy vấn tự động
Đặc tả liên quan và tài liệu tham khảo
- RFC 2324 section 2.3.2: định nghĩa ban đầu của mã trạng thái 418
- HTTP Semantics name-418-unused: trạng thái được dành riêng của 418
- HTTP response status codes: danh sách mã trạng thái phản hồi HTTP
- Wikipedia: Hyper Text Coffee Pot Control Protocol: tài liệu tham khảo về Hyper Text Coffee Pot Control Protocol
1 bình luận
Ý kiến trên Hacker News
Nếu rảnh thì cũng đáng đọc lại cuộc thảo luận hồi mnot từng định loại bỏ mã trạng thái 418 khỏi nhiều ngôn ngữ và bản triển khai vì cho rằng nó không chính xác về mặt kỹ thuật
https://github.com/nodejs/node/issues/14644
https://github.com/golang/go/issues/21326
Cuối cùng còn có người làm hẳn một trang là http://save418.com/
Kiểu như thêm emoji tên lửa khi tác vụ thành công, và tôi phản đối. Một khi đã bắt đầu thêm mấy thứ này thì mỗi người sẽ có gu riêng, rồi sẽ liên tục nảy sinh tranh luận chỗ nào nên thêm, chỗ nào nên bỏ, và ngay cả khi đang bàn chủ đề hoàn toàn khác nó cũng lại bị lôi ra
Đặc biệt nếu không theo dõi hành vi người dùng để xem các chỉ số thực sự có cải thiện hay không, thì việc tăng chi phí giao tiếp là một tổn thất lớn. Không phải vấn đề chuyên môn, mà là tính chủ quan kiểu có người thích, có người ghét, có người chẳng để ý, cứ thế tạo ra những ma sát nhỏ rất thường xuyên
Tôi phản hồi các yêu cầu bot không chính đáng bằng 418. Vừa vui vừa dễ lọc log hơn
Ví dụ cấu hình Nginx như sau
Nothing to hack around here, I’m just a teapot:
location ~* .(?:php|aspx?|jsp|dll|sql|bak)$ {
return 418;
}
error_page 418 /418.html;
Ví dụ: https://FreeSolitaire.win/wp-login.php
Nhân tiện, /wp-login.php là URL đăng nhập của WordPress, và các bot đi tìm bản cài WordPress dễ bị tấn công thường hay gửi bừa yêu cầu đến đó
Tôi cũng tò mò không biết phải làm sao nếu muốn chặn vĩnh viễn địa chỉ nào đã từng yêu cầu mấy URL kiểu này
RFC gốc được liên kết cũng rất đáng đọc: https://www.rfc-editor.org/rfc/rfc2324
Khi đọc tài liệu về cách TCP hay TLS hoạt động, tôi có cảm giác chúng được viết bởi các chuyên gia dày dạn kinh nghiệm và có tầm nhìn, còn tài liệu CCSDS thì trông như do mấy quan chức cả đời chưa viết nổi một dòng code soạn ra
Đây là kiểu trò đùa nerd vô duyên mà bất ngờ có từ trước khi “sir, this is a wendy's” bùng lên thành meme Facebook vào thập niên 2010
Tôi luôn nhớ đến một đoạn hay ho từng đọc được khi đang xem HTTP/2 RFC vì một lý do nào đó
Trước khi “429 Too Many Requests” được tiêu chuẩn hóa, Twitter API khi giới hạn tốc độ yêu cầu từng trả về mã trạng thái 420 không chuẩn cùng dòng chữ “Enhance Your Calm”. Vì những lý do dễ hiểu, họ đã dừng làm vậy, nhưng riêng câu đó thì đã được lén đưa vào HTTP/2
https://datatracker.ietf.org/doc/html/rfc7540#section-7
Nếu xem mục 0xb, câu mô tả việc đóng kết nối do tải quá mức đúng là ENHANCE_YOUR_CALM. Lần nào thấy cũng buồn cười
Mỗi lần gặp mã lỗi này trong dịch vụ thực tế tôi đều thấy cực kỳ bực mình
Có người muốn tỏ ra hóm hỉnh nên trả về cái này thay vì các mã trạng thái đúng như 429 hay 503, và vì thế làm hỏng rất nhiều trình phân tích mã trạng thái HTTP
Chẳng hóm hỉnh cũng chẳng buồn cười, thật ra chỉ thấy chán. Tôi biết mình không phải người vui tính, nhưng vẫn còn việc phải làm
Chuyện kể rằng Van Halen từng ghi trong hợp đồng biểu diễn rằng phải để M&M ở hậu trường nhưng phải bỏ hết viên màu nâu
Trong hồi ký ‘Crazy From the Heat’, ca sĩ David Lee Roth giải thích rằng đây không phải yêu sách trẻ con mà là một bài kiểm tra thông minh để đánh giá ngay xem địa điểm tổ chức có an toàn hay không
Nếu địa điểm vẫn mang ra M&M màu nâu thì có nghĩa là họ đã không đọc kỹ hợp đồng, và rất có thể cũng mắc lỗi ở những phần nguy hiểm hơn như nguồn điện hay tải trọng sân khấu
https://www.metaltalk.net/chris-dale-myth-busting-the-van-ha...
Trước đây Sonatype Nexus từng trả về 418 trong lúc tải artifact lên, và tôi chẳng thấy ấn tượng gì cả
Việc dùng sai mã trạng thái HTTP lần nào thấy cũng khiến tôi ngạc nhiên. Trường hợp tôi thích nhất là một khách hàng có dịch vụ trả về “200 OK” rồi trong phần thân phản hồi chỉ ghi mỗi chữ “500” dưới dạng văn bản
Khi được yêu cầu nếu API lỗi thì hãy trả lỗi 500 thay vì 200, họ không đổi header mà chỉ đổi số 200 bên trong phản hồi. “200 Created” cũng là một ví dụ khá điển hình cho thấy lập trình viên hiểu chưa tới nơi hoặc bị ràng buộc bởi framework kỳ quặc
Trong dịch vụ xác thực, chúng tôi dùng mã phản hồi 418
Nó được dùng để phân biệt token không hợp lệ vì đã hết hạn hay vì lý do khác. Nếu là 418 thì hệ thống hiểu rằng chỉ cần tự động làm mới access token là được. Khá vô hại, và hoàn toàn không phải biện pháp bảo mật gì
Các cuộc thảo luận liên quan
Năm 2020, 153 điểm·118 bình luận: https://news.ycombinator.com/item?id=24206899
Năm 2021, 193 điểm·108 bình luận: https://news.ycombinator.com/item?id=28541327
Năm 2023, 206 điểm·189 bình luận: https://news.ycombinator.com/item?id=36090344
Trong những thread kiểu này thường sẽ có ai đó link đến iiNet coffee cam. Đây nhé
https://coffeecam.iinet.net.au/coffee/history/
coffeecam cũng rất dễ thương, còn acb, người chủ yếu phụ trách coffeecam, còn bán cả bánh kẹo Mỹ quanh đó nữa. Ít nhất là hồi tôi còn làm ở Hay Street thì là vậy