418“ ฉันเป็นกาน้ำชา” เป็นรหัสตอบกลับ HTTP จริงหรือ


121

418 "ฉันคือกาน้ำชา" เป็นรหัสตอบกลับ HTTP จริงหรือ

มีการอ้างอิงถึงสิ่งนี้มากมายบนอินเทอร์เน็ตรวมถึงรายการรหัสตอบกลับ แต่ฉันคิดไม่ออกว่ามันเป็นเรื่องตลกแปลก ๆ หรือไม่


2
ดูen.wikipedia.org/wiki/List_of_HTTP_status_codes#418
melpomene

คำตอบ:


122

ฉันใช้รหัสนี้ ฉันมีคำขอพร็อกซีย้อนกลับ nginx ไปยังเซิร์ฟเวอร์ HTTP สองเซิร์ฟเวอร์ที่แยกกัน หนึ่งจัดการคำร้องขอสำหรับผู้ใช้ที่ไม่ได้รับการพิสูจน์ตัวตนและส่วนที่สองจัดการคำร้องขอสำหรับผู้ใช้ที่พิสูจน์ตัวตน ปัญหาในกรณีนี้คือเซิร์ฟเวอร์แรกเป็นเซิร์ฟเวอร์ที่กำหนดว่าผู้ใช้ได้รับการพิสูจน์ตัวตนหรือไม่ โปรดอย่าถามว่าทำไม

418 I'm a teapotดังนั้นถ้าเซิร์ฟเวอร์แรกกำหนดผู้ใช้จะได้รับรองความถูกต้องมันตอบสนอง จากนั้น NGINX จะเปลี่ยนเส้นทางการรับส่งข้อมูลภายในไปยังเซิร์ฟเวอร์ที่สอง เท่าที่เกี่ยวข้องกับเบราว์เซอร์มันเป็นคำขอเดียว

นี่คือเจตนารมณ์ของรหัส HTCPCP 418เพราะถ้าคุณพยายามเป่าด้วยกาน้ำชาคำตอบที่เหมาะสมคือ "ฉันไม่ใช่คนที่จัดการคำขอนั้นได้ แต่อาจมีคนอื่น" .. อีกอย่าง "ผมกาน้ำชาหาเครื่องชงกาแฟ" (เซิร์ฟเวอร์ที่สองเป็นเครื่องชงกาแฟ)

ท้ายที่สุดแล้วแม้ว่า 418 ไม่ได้กำหนดไว้อย่างชัดเจนในRFC 7231แต่ก็ยังคงถูกปกคลุมด้วยร่มของ4xx (Client Error).

6. รหัสสถานะการตอบสนอง

  • 4xx (Client Error): คำร้องขอมีไวยากรณ์ที่ไม่ถูกต้องหรือไม่สามารถดำเนินการได้

6.5. ข้อผิดพลาดไคลเอ็นต์ 4xx

  • คลาส 4xx (Client Error) ของรหัสสถานะบ่งชี้ว่าไคลเอ็นต์ดูเหมือนจะทำผิดพลาด ยกเว้นเมื่อตอบสนองต่อคำร้องขอ HEAD เซิร์ฟเวอร์ควรส่งการเป็นตัวแทนที่มีคำอธิบายของสถานการณ์ข้อผิดพลาดและไม่ว่าจะเป็นเงื่อนไขชั่วคราวหรือถาวร รหัสสถานะเหล่านี้ใช้ได้กับวิธีการร้องขอใด ๆ ตัวแทนผู้ใช้ควรแสดงการเป็นตัวแทนที่รวมไว้ให้กับผู้ใช้

2
ฉันมีผู้ให้บริการบุคคลที่สาม (ผู้ให้บริการที่ไม่ดีจริงๆ) ซึ่งจะตอบด้วย 418 หากคุณไม่มีส่วนหัวยอมรับ ฉันคิดเสมอว่ามันเป็นเพราะพวกเขาแย่ แต่สิ่งนี้อธิบายได้จริงว่าเกิดอะไรขึ้น ยังคงไม่ให้อภัยพวกเขาสำหรับการรั่วไหลรหัสสถานะนั้นออกจากเซิร์ฟเวอร์ของพวกเขาแม้ว่า
Hoffmann

7
@Hoffmann อาจเหมาะสมสำหรับพวกเขาที่จะตอบสนองด้วย 400 Bad Request หรือ 415 Unsupported Media Type รหัส 4xx ใด ๆ แสดงถึงข้อผิดพลาดของไคลเอ็นต์ดังนั้นจึงสามารถตีความได้เช่นนั้น
wizulus

1
รหัสสถานะนี้ถูกเพิ่มลงในโมดูลไลบรารีมาตรฐานhttpใน Python 3.9
BramAppel

61

รหัสตอบกลับ HTTP 418 เดิมกำหนดไว้ในโปรโตคอลRFC 2324 ("Hyper Text Coffee Pot Control Protocol (HTCPCP / 1.0)") และRFC 7168 ("The Hyper Text Coffee Pot Control Protocol for Tea Efflux Appliances (HTCPCP-TEA)") โปรโตคอล

ต่อ Wikipedia: รายการรหัสสถานะ HTTP: # 418

รหัสนี้ถูกกำหนดขึ้นในปี 1998 เป็นหนึ่งในIETF ดั้งเดิมFools เมษายนตลกในRFC 2324 , Hyper Text หม้อกาแฟ Control Protocolและไม่คาดว่าจะถูกนำมาใช้โดยเซิร์ฟเวอร์ HTTP ที่เกิดขึ้นจริง RFC ระบุรหัสนี้ควรส่งคืนโดยกาน้ำชาที่ร้องขอเพื่อชงกาแฟสถานะ HTTP นี้จะใช้เป็นไข่อีสเตอร์ในบางเว็บไซต์รวมถึง Google.com


10
ควรทำให้ชัดเจนว่าไม่ใช่รหัสสถานะจริง รายการอย่างเป็นทางการอยู่ที่นี่: iana.org/assignments/http-status-codes/...
ปลิ้น

@ ยกเลิกสิ่งที่ส่งผลกระทบว่าบางสิ่งบางอย่างใน RFC กลายเป็น "ทางการ" หรือไม่ คุณช่วยแสดงความคิดเห็นเป็นคำตอบเพื่อให้ฉันยอมรับได้ไหม
Mohan

@ Mohan ฉันรู้สึกไม่ค่อยดีที่พยายามเขียน IETF และกระบวนการสร้างมาตรฐานลงในความคิดเห็นเล็ก ๆ น้อย ๆ เพราะฉันอาจจะผิดพลาด ในที่สุดฉันเชื่อว่าสิ่งนี้เกิดขึ้นกับคณะทำงานของ IETF ที่เกี่ยวข้อง
ปลิ้น

ฉันใช้เป็นตัวยึดหรือ 'สิ่งที่ต้องทำ' เมื่อฉันสร้างเว็บแอป ความคิดค่อนข้างคล้ายกับหมายเลขโทรศัพท์ของcom.org.uk/phones-telecoms-and-internet/…ฉันมั่นใจได้ว่าจะไม่มีการใช้อย่างจริงจัง
Chris Huang-Leaver

15

ใส่คำอธิบายภาพที่นี่

ใช่ฉันยืนยันได้ว่าฉันเห็น HTTP 418 กลับมาจากเซิร์ฟเวอร์ที่ใช้งานจริง มันมีอยู่จริง


6
คลาส WebException จะแสดงโค้ดตอบกลับและข้อความสถานะใด ๆ ที่ส่งกลับในคำร้องขอ หากบรรทัดแรกของส่วนหัวการตอบกลับคือ "432 One Zero" ข้อความจะเป็น "เซิร์ฟเวอร์ระยะไกลส่งคืนข้อผิดพลาด: (432) One Zero" การทราบว่าเซิร์ฟเวอร์ใดที่คุณเรียกใช้เมื่อเกิดข้อผิดพลาดนี้อาจเป็นประโยชน์มากขึ้นและซอฟต์แวร์กำลังทำงานอยู่
wizulus

6

ใช่มันเป็นรหัส "ของจริง" เนื่องจากได้รับการเผยแพร่เป็น RFC อย่างเป็นทางการโดย Internet Engineering Task Force แต่ RFC นั้นได้รับการเผยแพร่เมื่อวันที่ 1 เมษายนและมีความหมายว่าเป็นเรื่องตลกของ April Fools (พร้อมกับ Hyper Text Coffee Pot Control ที่เหลือ Protocol) ไม่ใช่สำหรับการนำไปใช้อย่างถูกต้องตามกฎหมาย นั่นเป็นเหตุผลที่เว็บไซต์ส่วนใหญ่ใช้เป็นไข่อีสเตอร์ แต่อย่างอื่นก็ควรหลีกเลี่ยง ตามที่ระบุไว้ในความคิดเห็นนี้มักจะมีสถานะที่เหมาะสมกว่าเช่น 400 (คำขอไม่ถูกต้อง) ทั้งหมดที่กล่าวมาต้องขอบคุณชุมชนไอทีตอนนี้มันเป็นรหัสที่สงวนไว้ดังนั้นอย่าคาดหวังว่ามันจะไปได้ทุกที่ทุกเวลาในเร็ว ๆ นี้

โดยเฉพาะอย่างยิ่งตามที่ Larry Masinter (ผู้เขียน RFC อ้างว่าโดย Wikipedia) ส่วนขยาย HTTP ที่เป็นปัญหานั้นตอบสนองวัตถุประสงค์ (เชิงเสียดสี): "มันระบุหลายวิธีที่ HTTP ถูกขยายออกไปอย่างไม่เหมาะสม"


1

ฉันคิดว่ามันปลอดภัยกว่าที่จะถือว่า 418 เป็นรหัสสงวนที่ครั้งหนึ่งเคยมีความหมายทางการครึ่งหนึ่ง แต่ตอนนี้ "ไม่ได้มอบหมาย" อย่างเป็นทางการ

ฉันคิดว่าในอดีตมีบางอย่างที่คิดเกี่ยวกับรหัสเหล่านี้แตกต่างจากที่เป็นอยู่ในตอนนี้ วันนี้ฟังดูไร้ความหมายและตลกดี อาจจะไม่ใช่?

กล่าวอีกนัยหนึ่งฉันจะหลีกเลี่ยงการใช้รหัสนี้


"อาจจะไม่ใช่" ไม่ใช่จริงๆแล้วมันเป็นแค่เรื่องตลกของ April Fools เท่านั้น คนที่ไม่สนใจว่าวันไหนของเดือนเมษายนที่ RFC ออกไปอาจจะคิดว่ามันเป็นเรื่องร้ายแรง!
Twisted Code
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.