รหัสสถานะ HTTP

รหัสที่พบบ่อยจาก API และ CDN ไม่รวมรหัสทดลองที่หายาก

อัปเดต:

รหัสชื่อความหมาย
200OKสำเร็จพร้อมเนื้อหา
201สร้างแล้วสร้างทรัพยากรแล้ว
204ไม่มีเนื้อหาสำเร็จ, เนื้อหาว่าง
301ย้ายถาวรแล้วเปลี่ยนเส้นทางถาวร
302พบแล้วเปลี่ยนเส้นทางชั่วคราว
304ไม่ถูกแก้ไขใช้สำเนาที่แคชไว้
400คำขอไม่ถูกต้องคำขอจากไคลเอนต์ไม่ถูกต้อง
401ไม่ได้รับอนุญาตต้องยืนยันตัวตน หรือยืนยันไม่ผ่าน
403ต้องห้ามยืนยันตัวตนแล้วแต่ถูกปฏิเสธ
404ไม่พบไม่มีทรัพยากรนี้
405ไม่อนุญาตให้ใช้เมธอดนี้เมธอด HTTP ไม่ถูกต้อง
408คำขอหมดเวลาไคลเอนต์ช้าเกินไป
409ขัดแย้งกันสถานะขัดแย้งกัน
410ไม่มีอีกต่อไปถูกลบถาวรแล้ว
422เอนทิตีประมวลผลไม่ได้ความหมายไม่ถูกต้อง
429คำขอมากเกินไปถูกจำกัดอัตราการเรียก
500ข้อผิดพลาดภายในเซิร์ฟเวอร์ข้อผิดพลาดฝั่งเซิร์ฟเวอร์
502เกตเวย์ไม่ถูกต้องการตอบจากอัปสตรีมไม่ถูกต้อง
503บริการไม่พร้อมใช้งานโหลดเกินหรือล่ม
504เกตเวย์หมดเวลาอัปสตรีมหมดเวลา

หมายเหตุ

คลาสทั้งห้าของรหัสสถานะ

หลักเลขตัวแรกบอกคุณว่าใครเป็นผู้รับผิดชอบและเกิดอะไรขึ้นโดยประมาณ 1xx เป็นข้อมูลสารสนเทศและแทบไม่เห็นโดยไคลเอนต์ 2xx หมายถึงสำเร็จ — 200 OK พร้อมบอดี้, 204 No Content ไม่มีบอดี้, 206 สำหรับดาวน์โหลดบางส่วน 3xx หมายถึงทรัพยากรอยู่ที่ที่อื่น 4xx หมายถึงคำขอกำลังผิด: ไวยากรณ์ไม่ดี, ขาดข้อมูลรับรอง, หรือถูกจำกัดอัตรา 5xx หมายถึงเซิร์ฟเวอร์ล้มเหลวแม้ว่าคำขอจะถูกต้อง การอ่านเพียงหลักเลขตัวแรกบอกคุณได้แล้วว่าคุณควรแก้ไขไคลเอนต์หรือแจ้งไปยังฝั่งเซิร์ฟเวอร์

การเลือกรีดIRECTให้เหมาะสม

301 และ 308 ต่างก็หมายถึงถาวร; 302 และ 307 ต่างก็หมายถึงชั่วคราว ความแตกต่างคือวิธีการจัดการ method: 301 และ 302 ในทางประวัติศาสตร์อนุญาตให้ไคลเอนต์เปลี่ยน POST เป็น GET ในขณะที่ 307 และ 308 รักษา method และบอดี้เดิม ซึ่งสำคัญสำหรับ API และการส่งฟอร์ม ใช้ 301 สำหรับ URL ที่ย้ายไปถาวร และใช้ 302 หรือ 307 สำหรับการเปลี่ยนเส้นทางชั่วคราวเช่นหน้าที่บำรุงรักษาหรือการทดสอบ A/B จงระวังโซ่ — การเพิ่มแต่ละขั้นตอนใช้เวลาแฝงและน้ำหนักลิงก์ ดังนั้นรีไดเรกต์ตรงไปยังจุดหมายสุดท้ายเลย

การจัดการข้อผิดพลาด 4xx

401 หมายถึงการยืนยันตัวตนขาดหายหรือไม่สำเร็จ ดังนั้นการส่งข้อมูลรับรองที่ถูกต้องสามารถแก้ไขได้; 403 หมายถึงคำขอถูกต้องและยืนยันตัวตนแล้วแต่ไม่ได้รับอนุญาต และการลองใหม่ด้วยข้อมูลรับรองเดียวกันจะไม่ช่วย 404 หมายถึงทรัพยากรไม่มีอยู่; 410 บ่งชี้ว่าเคยมีอยู่และถูกลบออกโดยเจตนา 429 หมายถึงคุณชนขีดจำกัดอัตราและควรถอยหลังเคารพหัวRetry-After 400 มักหมายถึงอินพุตผิดรูปแบบ, 405 หมายถึง method ผิดสำหรับ URL นั้น, และ 422 หมายถึงไวยากรณ์ถูกต้องแต่เนื้อหาไม่สามารถตรวจสอบได้

การอ่านรหัส 5xx

500 เป็นข้อผิดพลาดภายในทั่วไป; 502 Bad Gateway หมายถึงเซิร์ฟเวอร์ upstream ส่งกลับมาซึ่งใช้การไม่ได้; 503 หมายถึงบริการยังไม่พร้อมใช้งานหรือมากเกินไปชั่วคราว; 504 หมายถึงเซิร์ฟเวอร์ upstream หมดเวลา เหล่านี้เป็นปัญหาของเซิร์ฟเวอร์ ไม่ใช่ปัญหาของผู้เรียก ดังนั้นการแก้ไขคือการลองใหม่ด้วยการถอยหลังแบบทวีคูณ, ตรวจสอบสุขภาพ upstream, หรือลดโหลด CDN สามารถส่ง 502, 503 หรือ 504 แทน origins ที่ไม่สามารถเข้าถึงได้ ซึ่งเป็นเหตุผลว่าทำไมข้อผิดพลาดเดียวกันอาจมาจากสองแหล่งที่แตกต่างกันมาก — ตรวจสอบหัวเซิร์ฟเวอร์และหัวcache-status เพื่อหาว่ามาจากที่ใด

รหัสสถานะในทางปฏิบัติ: API และการแคช

การใช้งานรายวันสองรายการที่คุ้มค่าต่อการใส่ใจ ประการแรก, การแคช: 200 พร้อมหัวCache-Controlสามารถเก็บได้, 304 Not Modified บอกให้ไคลเอนต์ใช้สำเนาของมันใหม่, และ 5xx ไม่ควรเก็บในแคช ประการที่สอง, API: POST ที่สร้างทรัพยากรควรส่งกลับ 201 พร้อมหัวLocation, DELETE มักส่งกลับ 204, และ PATCH ที่ไม่เปลี่ยนแปลงใด ๆ อาจส่งกลับ 200 หรือ 204 ไคลเอนต์ที่มีพฤติกรรมดีแบ่งไปตามคลาสแรก (2xx, 4xx, 5xx) และจากนั้นจึงแยกตามรหัสเฉพาะ ซึ่งทำให้ตรรกะการลองใหม่และการถอยหลังแบบทวีคูณเรียบง่ายและคาดเดาได้

คำถามที่พบบ่อย

รหัส HTTP 403 หมายความว่าอะไร?
403 หมายถึงเซิร์ฟเวอร์เข้าใจและยืนยันตัวตนคำขอแล้ว แต่ปฏิเสธการเข้าถึงทรัพยากร ต่างจาก 401 ตรงที่ล็อกอินใหม่ก็ไม่ช่วย
รีไดเร็กต์ HTTP 301 กับ 302 ต่างกันอย่างไร?
301 คือการย้ายถาวร ไคลเอนต์และเสิร์ชเอนจินควรใช้ URL ใหม่ตั้งแต่บัดนี้ ส่วน 302 เป็นการรีไดเร็กต์ชั่วคราว URL เดิมยังใช้ได้
รหัส HTTP 429 คืออะไร แก้อย่างไร?
429 หมายถึงส่งคำขอถี่เกินจนโดนจำกัดอัตรา ควรลดความถี่และปฏิบัติตาม header Retry-After หากเซิร์ฟเวอร์ส่งมาให้

แหล่งที่มา