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