ค้นหารหัสสถานะ HTTP
รหัสสถานะความถี่สูง
ผลลัพธ์การค้นหา (77)
| รหัส | กลุ่ม | ชื่อ | คำอธิบาย |
|---|---|---|---|
| 100 | 1xx | Continue | 已收到请求头,客户端应继续发送请求体 |
| 101 | 1xx | Switching Protocols | 服务器正按 Upgrade 切换协议(如 WebSocket) |
| 102 | 1xx | Processing | 已接受请求,处理尚未结束(WebDAV) |
| 103 | 1xx | Early Hints | 在最终响应前返回 Link 等提示以预加载资源 |
| 104 | 1xx | Upload Resumption Supported | 表明支持可恢复上传(IANA 临时注册,详见 httpbis 可恢复上传草案) |
| 200 | 2xx | OK | 请求成功 |
| 201 | 2xx | Created | 已创建资源 |
| 202 | 2xx | Accepted | 已接受,尚未处理完成(异步任务常见) |
| 203 | 2xx | Non-Authoritative Information | 成功,表示可能来自代理/缓存 |
| 204 | 2xx | No Content | 成功,无响应体 |
| 205 | 2xx | Reset Content | 成功,客户端应重置文档或表单视图 |
| 206 | 2xx | Partial Content | 成功返回部分内容(Range) |
| 207 | 2xx | Multi-Status | 多状态 XML响应(WebDAV) |
| 208 | 2xx | Already Reported | DAV 绑定成员已在先前响应中列出(WebDAV) |
| 226 | 2xx | IM Used | 已应用实例操作(Delta 编码,RFC 3229) |
| 300 | 3xx | Multiple Choices | 多种表示可选,需选择或重定向 |
| 301 | 3xx | Moved Permanently | 资源永久迁移至新 URI |
| 302 | 3xx | Found | 资源临时位于其他 URI |
| 303 | 3xx | See Other | 应使用 GET 访问另一 URI 获取结果 |
| 304 | 3xx | Not Modified | 缓存仍有效 |
| 305 | 3xx | Use Proxy | 须经由代理(已弃用,不建议实现) |
| 306 | 3xx | (Unused) | 历史占位,HTTP/1.1 起未使用 |
| 307 | 3xx | Temporary Redirect | 临时重定向,方法与正文不变 |
| 308 | 3xx | Permanent Redirect | 永久重定向,方法与正文不变 |
| 400 | 4xx | Bad Request | 语法无效,无法解析 |
| 401 | 4xx | Unauthorized | 需身份验证(常配合 WWW-Authenticate) |
| 402 | 4xx | Payment Required | 预留,极少实现 |
| 403 | 4xx | Forbidden | 拒绝访问(与401 不同:未必缺凭证) |
| 404 | 4xx | Not Found | 未找到资源 |
| 405 | 4xx | Method Not Allowed | 该 URI 不支持此 HTTP 方法 |
| 406 | 4xx | Not Acceptable | 无法生成 Accept 可接受的表示 |
| 407 | 4xx | Proxy Authentication Required | 需先通过代理认证 |
| 408 | 4xx | Request Timeout | 等待请求超时 |
| 409 | 4xx | Conflict | 与资源当前状态冲突 |
| 410 | 4xx | Gone | 资源曾存在且已永久移除 |
| 411 | 4xx | Length Required | 缺少有效 Content-Length 等 |
| 412 | 4xx | Precondition Failed | 前置条件(如 If-*)不满足 |
| 413 | 4xx | Content Too Large | 请求体过大(RFC 9110 用语) |
| 414 | 4xx | URI Too Long | URI 过长 |
| 415 | 4xx | Unsupported Media Type | 不支持的媒体类型 |
| 416 | 4xx | Range Not Satisfiable | 无法满足 Range |
| 417 | 4xx | Expectation Failed | 无法满足 Expect 头 |
| 418 | 4xx | (Unused) | RFC 9110 标记未使用;典故为 RFC 2324「I'm a teapot」 |
| 421 | 4xx | Misdirected Request | 请求未指向能响应的服务器/连接(如 HTTP/2) |
| 422 | 4xx | Unprocessable Content | 语义可理解但无法处理(校验失败等) |
| 423 | 4xx | Locked | 资源被锁定(WebDAV) |
| 424 | 4xx | Failed Dependency | 依赖请求失败(WebDAV) |
| 425 | 4xx | Too Early | 拒绝可能重放的过早请求 |
| 426 | 4xx | Upgrade Required | 需升级到 Upgrade 指定的协议 |
| 428 | 4xx | Precondition Required | 源站要求条件请求以防冲突 |
| 429 | 4xx | Too Many Requests | 请求过于频繁,应限速 |
| 431 | 4xx | Request Header Fields Too Large | 请求头整体或单项过大 |
| 444 | vendor | No Response (nginx) | Nginx 直接关连接不返回状态行(常见于限流/屏蔽) |
| 451 | 4xx | Unavailable For Legal Reasons | 因法律原因不可提供 |
| 495 | vendor | SSL Certificate Error (nginx) | Nginx:客户端证书校验失败 |
| 496 | vendor | SSL Certificate Required (nginx) | Nginx:需要客户端证书 |
| 497 | vendor | HTTP to HTTPS Port (nginx) | Nginx:向 HTTPS 端口发送明文 HTTP |
| 499 | vendor | Client Closed Request (nginx) | 客户端在响应完成前关闭连接 |
| 500 | 5xx | Internal Server Error | 服务器内部错误 |
| 501 | 5xx | Not Implemented | 不支持该方法或能力 |
| 502 | 5xx | Bad Gateway | 网关从上游收到无效响应 |
| 503 | 5xx | Service Unavailable | 过载或维护,暂不可用 |
| 504 | 5xx | Gateway Timeout | 网关等待上游超时 |
| 505 | 5xx | HTTP Version Not Supported | 不支持请求中的 HTTP 版本 |
| 506 | 5xx | Variant Also Negotiates | 透明协商配置错误 |
| 507 | 5xx | Insufficient Storage | 存储空间不足(WebDAV) |
| 508 | 5xx | Loop Detected | 检测到循环(WebDAV) |
| 510 | 5xx | Not Extended | 需扩展(RFC 2774 实验状态,IANA 标为 OBSOLETED,可忽略) |
| 511 | 5xx | Network Authentication Required | 需在网络层认证(如强制门户) |
| 520 | vendor | Unknown Error (Cloudflare) | 源站返回异常或空响应 |
| 521 | vendor | Web Server Is Down (Cloudflare) | 无法与源站建立 TCP |
| 522 | vendor | Connection Timed Out (Cloudflare) | 与源站握手或连接超时 |
| 523 | vendor | Origin Is Unreachable (Cloudflare) | 无法路由到源站 |
| 524 | vendor | A Timeout Occurred (Cloudflare) | 源站已连接但未及时返回完整响应 |
| 525 | vendor | SSL Handshake Failed (Cloudflare) | 与源站 SSL 握手失败 |
| 526 | vendor | Invalid SSL Certificate (Cloudflare) | 源站证书无效 |
| 527 | vendor | Railgun Error (Cloudflare) | Railgun 边缘到源监听错误(Cloudflare 专用) |
เครื่องมืออ้างอิงรหัสสถานะ HTTP ฟรี ครอบคลุม 5 หมวดหมู่อย่างสมบูรณ์: 1xx ข้อมูล/2xx สำเร็จ/3xx เปลี่ยนเส้นทาง/4xx ข้อผิดพลาดฝั่งไคลเอ็นต์/5xx ข้อผิดพลาดฝั่งเซิร์ฟเวอร์ พร้อมส่วนขยายของผู้ให้บริการ รองรับการกรองหมวดหมู่และค้นหาด้วยคำสำคัญ จำเป็นสำหรับการพัฒนาและดีบัก
คำแนะนำที่เกี่ยวข้อง
รหัสสถานะ HTTP คืออะไร?
รหัสสถานะ HTTP (HTTP Status Code) คือรหัสตัวเลขสามหลักที่เซิร์ฟเวอร์ส่งคืนเมื่อตอบสนองต่อคำขอ HTTP ซึ่งระบุผลลัพธ์ของการประมวลผล — สำเร็จหรือล้มเหลว? หากล้มเหลวเป็นปัญหาของไคลเอ็นต์หรือเซิร์ฟเวอร์? จำเป็นต้องเปลี่ยนเส้นทางหรือไม่? นี่เป็นหนึ่งในข้อมูลการวินิจฉัยพื้นฐานและสำคัญที่สุดในการพัฒนาและดำเนินงานเว็บ
รหัสสถานะแบ่งออกเป็น 5 หมวดหมู่ตามหลักแรก: **1xx การตอบกลับข้อมูล** (ได้รับคำขอแล้ว กำลังดำเนินการต่อ พบน้อยในทางปฏิบัติ); **2xx สำเร็จ** (คำขอได้รับการประมวลผลสำเร็จ รหัสที่พบบ่อยที่สุดคือ 200 OK); **3xx เปลี่ยนเส้นทาง** (ต้องมีการดำเนินการเพิ่มเติมจากไคลเอ็นต์ เช่น 301 เปลี่ยนเส้นทางถาวร, 302 เปลี่ยนเส้นทางชั่วคราว, 304 แคชฮิต); **4xx ข้อผิดพลาดไคลเอ็นต์** (ปัญหากับคำขอ เช่น 400 พารามิเตอร์ไม่ถูกต้อง, 401 ไม่ได้รับการรับรองความถูกต้อง, 403 ไม่มีสิทธิ์, 404 ไม่พบ, 429 ขีดจำกัดอัตรา); **5xx ข้อผิดพลาดเซิร์ฟเวอร์** (เซิร์ฟเวอร์ไม่สามารถประมวลผลคำขอได้ เช่น 500 ข้อผิดพลาดภายใน, 502 Bad Gateway, 503 ไม่สามารถใช้งานได้, 504 หมดเวลา)
**เหตุใดจึงต้องแยกแยะ 4xx และ 5xx?** นี่คือการประเมินลำดับความสำคัญแรกเมื่อแก้ไขปัญหา: เมื่อเห็น 4xx คุณควรตรวจสอบคำขอของคุณก่อน — URL ถูกต้องหรือไม่ พารามิเตอร์ครบถ้วนหรือไม่ มี Token แนบมาหรือไม่ สิทธิ์เพียงพอหรือไม่ คำขอถี่เกินไปหรือไม่?; เมื่อเห็น 5xx คุณต้องตรวจสอบบันทึกเซิร์ฟเวอร์ — กระบวนการแบ็กเอนด์ทำงานปกติหรือไม่ ฐานข้อมูลเชื่อมต่อหรือไม่ การกำหนดค่าถูกต้องหรือไม่ มีโหลดมากเกินไปหรือไม่?. การไปในทิศทางที่ผิดจะเสียเวลาดีบักเป็นอย่างมาก
**ความแตกต่างระหว่างรหัสเปลี่ยนเส้นทางเป็นหัวข้อที่พบบ่อยในการสอบ**: 301 คือการเปลี่ยนเส้นทางถาวร (การโอนอำนาจ SEO แคชเบราว์เซอร์), 302 คือการเปลี่ยนเส้นทางชั่วคราว (ไม่มีการโอนอำนาจ), 307/308 รักษาเมธอดคำขออย่างเข้มงวด (POST จะไม่ถูกแปลงเป็น GET) ในทางปฏิบัติใช้ 301 สำหรับการเปลี่ยนเส้นทาง HTTPS และการย้ายโดเมน, 302 สำหรับการบำรุงรักษาชั่วคราว, 303 สำหรับการเปลี่ยนเส้นทางหลังส่งฟอร์ม POST (รูปแบบ PRG)
เครื่องมือนี้ **รวม** รหัสสถานะ HTTP มาตรฐานทั้งหมดอย่างสมบูรณ์ (รวมถึงรหัสที่สับสนได้ง่ายเช่น 303/307/308, 405/409/422/429 ฯลฯ) รวมถึงรหัสส่วนขยายของผู้ให้บริการที่ใช้กันทั่วไปจาก Cloudflare/Nginx (520-527, 499) รองรับการกรองหมวดหมู่ ค้นหาด้วยคำสำคัญ และการ์ดเข้าถึงด่วน — เครื่องมืออ้างอิงประจำวันที่จำเป็นสำหรับการดีบักการพัฒนา แก้ไขปัญหา API และค้นหาตำแหน่งความล้มเหลวในการดำเนินงาน
กรณีการใช้งาน
- ดีบัก Web/API: เมื่อ API มีข้อผิดพลาด ค้นหาความหมายของรหัสสถานะอย่างรวดเร็วเพื่อกำหนดทิศทางการแก้ไข (พารามิเตอร์ฟรอนต์เอนด์หรือบั๊กแบ็กเอนด์?)
- แก้ไขปัญหาการรวม API: แยกแยะความล้มเหลวในการรับรองความถูกต้อง 401 สิทธิ์ไม่เพียงพอ 403 ที่อยู่ไม่ถูกต้อง 404 ข้อผิดพลาดเซิร์ฟเวอร์ 500
- วินิจฉัยความล้มเหลวในการดำเนินงาน: เมื่อพบข้อผิดพลาด 502/503/504/522/524 ให้ระบุสาเหตุและวิธีแก้ไขอย่างรวดเร็ว
- งาน SEO: ตรวจสอบว่าประเภทการเปลี่ยนเส้นทาง 301/302 ถูกต้องหรือไม่ ตรวจสอบว่าการจัดการหน้าข้อผิดพลาด 404 เหมาะสมหรือไม่
- เรียนรู้โปรโตคอล HTTP: มือใหม่เรียนรู้หมวดหมู่รหัส HTTP และวัตถุประสงค์ของแต่ละรหัสอย่างเป็นระบบ
- เตรียมตัวสัมภาษณ์: สัมภาษณ์ฟรอนต์เอนด์/แบ็กเอนด์มักถามถึงความแตกต่าง 301 vs 302, 401 vs 403, 502 vs 504
- วิเคราะห์บันทึก: เข้าใจความหมายของแต่ละรหัสสถานะเมื่อวิเคราะห์บันทึกการเข้าถึง Nginx/Apache/CDN
วิธีการใช้งาน
- เพียงพิมพ์หมายเลขรหัสสถานะ (เช่น 404) หรือคำสำคัญ (เช่น redirect, forbidden, timeout) ในช่องค้นหา
- หรือคลิกปุ่มหมวดหมู่ (1xx/2xx/3xx/4xx/5xx/vendor) เพื่อนำทางตามหมวดหมู่
- คลิกที่การ์ดรหัสที่ใช้บ่อยเพื่อกรองรหัสนั้นอย่างรวดเร็ว
- ดูชื่อรหัสสถานะ สีหมวดหมู่ และคำอธิบายโดยละเอียด
- คลิกปุ่มคัดลอกเพื่อคัดลอกสรุปที่กรองแล้วปัจจุบันสำหรับการบันทึกปัญหา
คุณสมบัติ
- ครอบคลุมอย่างสมบูรณ์: รหัสมาตรฐาน 1xx-5xx + ส่วนขยายผู้ให้บริการ Cloudflare/Nginx (5xx vendor) ทั้งหมดในที่เดียว
- การ์ดเข้าถึงด่วน: 12 รหัสที่ใช้มากที่สุด (200/301/302/304/400/401/403/404/429/500/502/503) — คลิกที่การ์ดเพื่อดูรายละเอียดโดยตรง
- ตัวกรองหมวดหมู่: กรองด้วยคลิกเดียวตามหมวดหมู่ 1xx/2xx/3xx/4xx/5xx/vendor เพื่อระบุประเภทปัญหาได้อย่างรวดเร็ว
- ค้นหาด้วยคำสำคัญ: รองรับการค้นหาแบบ fuzzy ตามหมายเลขรหัส ชื่อภาษาอังกฤษ หรือคำอธิบายเพื่อค้นหารหัสเป้าหมายได้อย่างรวดเร็ว
- การเข้ารหัสสี: 2xx สีเขียว (สำเร็จ), 3xx/4xx สีเหลือง (เตือน/ปัญหาไคลเอ็นต์), 5xx สีแดง (ปัญหาเซิร์ฟเวอร์) สำหรับการประเมินด้วยภาพที่ง่าย
- ตารางบนเดสก์ท็อป/การ์ดบนมือถือ: แสดงตารางเต็มบนเดสก์ท็อป แสดงการ์ดตอบสนองบนมือถือเพื่อประสบการณ์ที่ยอดเยี่ยมบนทุกอุปกรณ์
- คัดลอกสรุปที่กรองแล้วด้วยคลิกเดียว: คัดลอกเงื่อนไขตัวกรองปัจจุบันและจำนวนผลลัพธ์สำหรับตั๋ว/เอกสาร
คำถามที่พบบ่อย
รหัสสถานะ HTTP คืออะไรและใช้ทำอะไร?
รหัสสถานะ HTTP คือรหัสตัวเลขสามหลักที่เซิร์ฟเวอร์ส่งคืนเพื่อตอบสนองต่อคำขอ HTTP ซึ่งระบุว่าคำขอสำเร็จ ล้มเหลว หรือต้องการการดำเนินการเพิ่มเติม แบ่งออกเป็น 5 หมวดหมู่: 1xx ข้อมูล, 2xx สำเร็จ, 3xx เปลี่ยนเส้นทาง, 4xx ข้อผิดพลาดไคลเอ็นต์, 5xx ข้อผิดพลาดเซิร์ฟเวอร์ ระหว่างการพัฒนาและดีบัก รหัสสถานะจะบอกทิศทางของปัญหาอย่างรวดเร็ว: 2xx สำเร็จไม่ต้องดำเนินการ; 4xx ตรวจสอบพารามิเตอร์คำขอ/การรับรองความถูกต้อง/สิทธิ์/ขีดจำกัดอัตรา; 5xx ตรวจสอบบันทึกเซิร์ฟเวอร์
ความแตกต่างที่แท้จริงระหว่างการเปลี่ยนเส้นทาง 301 และ 302 คืออะไร?
ความแตกต่างหลัก: 301 คือ **การเปลี่ยนเส้นทางถาวร** — เบราว์เซอร์/เครื่องมือค้นหาจะแคชที่อยู่ใหม่และอำนาจ SEO จะถูกโอนไปยัง URL ใหม่; 302 คือ **การเปลี่ยนเส้นทางชั่วคราว** — จะไม่ถูกแคชและไม่มีการโอนอำนาจ นอกจากนี้ยังมีความแตกต่างที่สำคัญในการเปลี่ยนเมธอด: ในอดีต 301/302 เปลี่ยน POST เป็น GET (พฤติกรรมที่ไม่ถูกต้อง) ในขณะที่ 307/308 รักษาเมธอดคำขอเดิมอย่างเข้มงวด ใช้ 301 สำหรับการเปลี่ยนเส้นทาง HTTPS การย้ายโดเมน การเปลี่ยนแปลง URL ถาวร; ใช้ 302 หรือ 307 สำหรับการบำรุงรักษาชั่วคราวและหน้าแคมเปญ
ความแตกต่างระหว่าง 401 และ 403 คืออะไร?
401 Unauthorized หมายถึง 'ไม่ได้รับการรับรองความถูกต้อง' — เซิร์ฟเวอร์ไม่ทราบว่าคุณเป็นใคร คุณต้องเข้าสู่ระบบ/ให้ Token ก่อน (มักมาพร้อมกับส่วนหัว WWW-Authenticate); 403 Forbidden หมายถึง 'รับรองความถูกต้องแล้วแต่ไม่มีสิทธิ์' — เซิร์ฟเวอร์ทราบว่าคุณเป็นใคร แต่คุณไม่มีสิทธิ์เข้าถึงทรัพยากรนี้ พูดง่ายๆ คือ: 401 คือ 'คุณไม่ได้นำบัตรเข้า', 403 คือ 'คุณมีบัตรแต่ไม่สามารถเข้าห้องนี้ได้'
ความแตกต่างระหว่าง 502, 503 และ 504 คืออะไร?
ทั้งหมดเป็นข้อผิดพลาดเซิร์ฟเวอร์แต่มีสาเหตุต่างกัน: 502 Bad Gateway หมายถึง reverse proxy ได้รับ **การตอบกลับไม่ถูกต้อง** จาก upstream (backend ขัดข้อง/ข้อผิดพลาดโปรโตคอล); 503 Service Unavailable หมายถึงเซิร์ฟเวอร์ **ไม่สามารถใช้งานได้ชั่วคราว** (โหลดมากเกินไป/บำรุงรักษา/บริการไม่ได้เริ่มทำงาน); 504 Gateway Timeout หมายถึงพร็อกซีเซิร์ฟเวอร์ **หมดเวลารอ upstream** (backend ประมวลผลช้าเกินไป/คิวรีฐานข้อมูลช้า) ในการแก้ไขปัญหา: สำหรับ 502 ให้ตรวจสอบว่ากระบวนการ backend ทำงานอยู่หรือไม่และบันทึกข้อผิดพลาด; สำหรับ 503 ตรวจสอบสถานะบริการ/ขีดจำกัดอัตรา/หน้าบำรุงรักษา; สำหรับ 504 ตรวจสอบประสิทธิภาพ backend/คิวรีช้า/การกำหนดค่า timeout
เมื่อใดควรใช้ 200 OK เทียบกับ 204 No Content?
200 OK คือการตอบกลับสำเร็จมาตรฐานและสามารถส่งคืนเนื้อหาการตอบกลับได้ (เช่น ผลลัพธ์คิวรี ข้อมูลทรัพยากรที่สร้าง); 204 No Content ระบุว่าสำเร็จแต่ **ไม่ส่งคืนเนื้อหาการตอบกลับ** ซึ่งมักใช้สำหรับ DELETE ที่สำเร็จ การอัปเดต PUT/POST ที่สำเร็จซึ่งไม่จำเป็นต้องส่งคืนข้อมูล การตอบกลับ 204 ไม่ควรมีเนื้อหา
จะจัดการรหัสจำกัดอัตรา 429 ได้อย่างไร?
429 Too Many Requests หมายถึงไคลเอ็นต์เกินขีดจำกัดความถี่ของคำขอเซิร์ฟเวอร์ การตอบกลับมักมีส่วนหัว Retry-After ที่ระบุว่าต้องรอกี่วินาทีก่อนลองอีกครั้ง ไคลเอ็นต์ควรใช้ backoff แบบเลขชี้กำลัง (Exponential Backoff): รอ 1 วินาทีในครั้งแรก 2 ในครั้งที่สอง 4 ในครั้งที่สาม... นอกจากนี้ ให้ตรวจสอบส่วนหัว X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset เพื่อทราบโควต้าจำกัดอัตรา
รหัสส่วนขยายของผู้ให้บริการ เช่น 520-527 ของ Cloudflare คืออะไร?
รหัสสถานะ HTTP มาตรฐานถูกกำหนดเฉพาะในช่วง 100-599 และส่วนใหญ่ได้รับการลงทะเบียนที่ IANA แต่ผู้ให้บริการ CDN/พร็อกซีกำหนดส่วนขยายที่กำหนดเอง: Cloudflare กำหนดซีรีส์ 520-527 สำหรับปัญหาการเชื่อมต่อกับต้นทาง (521 ต้นทางปฏิเสธ, 522 หมดเวลาการเชื่อมต่อ, 524 หมดเวลาการตอบกลับ ฯลฯ); Nginx กำหนด 499 (ไคลเอ็นต์ปิดการเชื่อมต่อ) รหัสเหล่านี้ไม่ใช่รหัส HTTP มาตรฐานแต่มักปรากฏในการแก้ไขปัญหาการดำเนินงานจริง และเครื่องมือนี้รวมถึงรหัสส่วนขยายของผู้ให้บริการที่ใช้กันทั่วไป
อภิธานศัพท์
- HTTP
- HyperText Transfer Protocol โปรโตคอลพื้นฐานสำหรับการสื่อสารข้อมูลบน World Wide Web โดยอาศัย TCP/IP ใช้โมเดลคำขอ-การตอบกลับ เวอร์ชันหลักในปัจจุบันคือ HTTP/1.1 และ HTTP/2 โดย HTTP/3 อาศัย QUIC
- Idempotency (ความเป็นเอกพจน์)
- การดำเนินการคำขอเดียวกันหลายครั้งมีผลเช่นเดียวกับการดำเนินการครั้งเดียว GET/HEAD/PUT/DELETE/OPTIONS/TRACE เป็น idempotent; POST ไม่ใช่ idempotent (การส่งหลายครั้งสร้างทรัพยากรหลายรายการ) เหตุผลสำคัญที่ 307/308 รักษาเมธอดคือการรักษา idempotency
- CORS (Cross-Origin Resource Sharing)
- กลไกสำหรับการเข้าถึงข้ามต้นทางภายใต้นโยบาย same-origin ของเบราว์เซอร์ คำขอ CORS preflight (OPTIONS) สามารถส่งคืน 405 Method Not Allowed หรือข้อผิดพลาดที่เกี่ยวข้องกับ CORS ซึ่งเป็นหนึ่งในปัญหาที่พบบ่อยที่สุดในการพัฒนาฟรอนต์เอนด์
- รูปแบบ PRG (Post/Redirect/Get)
- แนวทางปฏิบัติที่ดีที่สุดสำหรับการส่งฟอร์มเว็บ: หลังจากส่งฟอร์มด้วย POST ให้ส่งคืนการเปลี่ยนเส้นทาง 303 See Other ไปยังหน้าผลลัพธ์ เพื่อหลีกเลี่ยงการส่งซ้ำเมื่อผู้ใช้รีเฟรช นี่คือกรณีการใช้งานทั่วไปที่สุดของ 303
- Retry-After
- ส่วนหัวการตอบกลับ HTTP ที่ใช้กับ 503 Service Unavailable หรือ 429 Too Many Requests เพื่อบอกไคลเอ็นต์ว่าต้องรอกี่วินาทีก่อนลองคำขออีกครั้ง
- WWW-Authenticate
- ส่วนหัวการตอบกลับ HTTP ที่ใช้กับ 401 Unauthorized เพื่อบอกไคลเอ็นต์ว่าจะใช้สคีมาการรับรองความถูกต้องใด (Basic/Bearer/Digest ฯลฯ) และขอบเขตการรับรองความถูกต้อง
- ETag / If-None-Match
- กลไกการตรวจสอบแคช เซิร์ฟเวอร์ส่งคืน ETag ที่ระบุเวอร์ชันของทรัพยากร; ไคลเอ็นต์ส่งส่วนหัว If-None-Match ในคำขอต่อๆ ไป และหากทรัพยากรไม่เปลี่ยนแปลง เซิร์ฟเวอร์จะส่งคืน 304 Not Modified (ไม่มีเนื้อหา ประหยัดแบนด์วิดท์)
- Reverse Proxy
- เซิร์ฟเวอร์พร็อกซี (เช่น Nginx, Cloudflare, HAProxy) ที่อยู่ระหว่างไคลเอ็นต์และเซิร์ฟเวอร์แบ็กเอนด์ รับคำขอจากไคลเอ็นต์และส่งต่อไปยังแบ็กเอนด์ จากนั้นส่งคืนการตอบกลับจากแบ็กเอนด์ไปยังไคลเอ็นต์ ข้อผิดพลาด 502/503/504 เกิดขึ้นทั้งหมดระหว่าง reverse proxy และแบ็กเอนด์
ภาพรวม 5 หมวดหมู่รหัสสถานะ HTTP
| คลาส | ความหมาย | วัตถุประสงค์ | รหัสที่ใช้บ่อย |
|---|---|---|---|
1xx | การตอบกลับข้อมูล (Informational) | ได้รับคำขอแล้ว กำลังดำเนินการต่อ (สถานะระหว่างกลางของโปรโตคอล) | 100 Continue, 101 Switching Protocols |
2xx | การตอบกลับสำเร็จ (Success) | เซิร์ฟเวอร์ได้รับ เข้าใจ และยอมรับคำขอสำเร็จแล้ว | 200 OK, 201 Created, 204 No Content, 206 Partial Content |
3xx | การเปลี่ยนเส้นทาง (Redirection) | ต้องมีการดำเนินการเพิ่มเติมจากไคลเอ็นต์เพื่อให้คำขอสมบูรณ์ | 301 Moved Permanently, 302 Found, 304 Not Modified, 307/308 |
4xx | ข้อผิดพลาดฝั่งไคลเอ็นต์ (Client Error) | คำขอมีข้อผิดพลาดทางไวยากรณ์หรือไม่สามารถดำเนินการได้ ความผิดของไคลเอ็นต์ | 400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found, 429 Too Many Requests |
5xx | ข้อผิดพลาดฝั่งเซิร์ฟเวอร์ (Server Error) | เซิร์ฟเวอร์ไม่สามารถดำเนินการคำขอที่ดูเหมือนถูกต้องได้ ความผิดของเซิร์ฟเวอร์ | 500 Internal Server Error, 502 Bad Gateway, 503 Service Unavailable, 504 Gateway Timeout |
เปรียบเทียบรหัสเปลี่ยนเส้นทางที่ใช้บ่อย (301/302/303/307/308)
| รหัส | ชื่อ | ถาวร | การเปลี่ยนเมธอด | แคชได้ | กรณีการใช้งานทั่วไป |
|---|---|---|---|---|---|
301 | Moved Permanently | ✅ ถาวร | POST อาจกลายเป็น GET (ความเข้ากันได้ทางประวัติศาสตร์) | ✅ แคชโดยค่าเริ่มต้น | ออกแบบเว็บใหม่ ย้ายโดเมน HTTP→HTTPS URL เก่าเลิกใช้ |
302 | Found | ❌ ชั่วคราว | POST อาจกลายเป็น GET (ความเข้ากันได้ทางประวัติศาสตร์) | ❌ ไม่แคชโดยค่าเริ่มต้น | เปลี่ยนเส้นทางบำรุงรักษาชั่วคราว หน้าแคมเปญ ทดสอบ A/B |
303 | See Other | ❌ ชั่วคราว | POST→GET (การเปลี่ยนแปลงอย่างชัดเจน) | ❌ ไม่แคชโดยค่าเริ่มต้น | เปลี่ยนเส้นทางไปยังหน้าผลลัพธ์หลังส่งฟอร์ม POST (รูปแบบ PRG) |
307 | Temporary Redirect | ❌ ชั่วคราว | รักษาเมธอดเดิมอย่างเข้มงวด | ❌ ไม่แคชโดยค่าเริ่มต้น | เปลี่ยนเส้นทางชั่วคราวที่รักษาเมธอดและเนื้อหาคำขออย่างเข้มงวด |
308 | Permanent Redirect | ✅ ถาวร | รักษาเมธอดเดิมอย่างเข้มงวด | ✅ แคชโดยค่าเริ่มต้น | เปลี่ยนเส้นทางถาวรที่ป้องกันไม่ให้ POST แปลงเป็น GET |
คู่มือแก้ไขปัญหาข้อผิดพลาดไคลเอ็นต์ที่พบบ่อย
| รหัส | ความหมาย | สาเหตุที่พบบ่อย | แนวทางแก้ไข |
|---|---|---|---|
400 | Bad Request | ข้อผิดพลาดไวยากรณ์คำขอ/ขาดพารามิเตอร์/ข้อผิดพลาดรูปแบบ JSON/ส่วนหัวใหญ่เกินไป | ตรวจสอบพารามิเตอร์คำขอ Content-Type การเข้ารหัส URL |
401 | Unauthorized | ไม่ได้รับการรับรองความถูกต้อง/Token หมดอายุ/ไม่มีส่วนหัว Authorization | ตรวจสอบสถานะการเข้าสู่หมดอายุของ Token รูปแบบส่วนหัว Bearer |
403 | Forbidden | รับรองความถูกต้องแล้วแต่ไม่มีสิทธิ์/IP ถูกบล็อก/CSRF Token ไม่ถูกต้อง/WAF บล็อก | ตรวจสอบสิทธิ์ผู้ใช้ รายการ IP ที่อนุญาต กฎ WAF CSRF Token |
404 | Not Found | URL ไม่มีอยู่/ทรัพยากรถูกลบ/ข้อผิดพลาดการกำหนดค่าการกำหนดเส้นทาง | ตรวจสอบการสะกด URL การกำหนดค่าเส้นทาง ว่าทรัพยากรถูกลบหรือไม่ |
405 | Method Not Allowed | เมธอดคำขอไม่ถูกต้อง (เช่น ใช้ POST บน endpoint ที่รับแค่ GET) | ตรวจสอบเมธอด HTTP (GET/POST/PUT/DELETE ฯลฯ), CORS preflight |
408 | Request Timeout | ไคลเอ็นต์ส่งคำขอช้าเกินไป/ความหน่วงของเครือข่าย/timeout เซิร์ฟเวอร์สั้นเกินไป | ตรวจสอบการเชื่อมต่อเครือข่าย เพิ่ม timeout อัปโหลดเป็นชุด |
409 | Conflict | ความขัดแย้งของทรัพยากร (เช่น สร้างซ้ำ ความขัดแย้งของเวอร์ชัน การแก้ไขพร้อมกัน) | ตรวจสอบการส่งซ้ำ ใช้การล็อกแบบออพติมิสติก/คีย์ idempotency |
413 | Payload Too Large | ไฟล์ที่อัปโหลด/เนื้อหาคำขอเกินขีดจำกัดของเซิร์ฟเวอร์ | ตรวจสอบ client_max_body_size ของ nginx บีบอัดไฟล์ อัปโหลดแบบแบ่งส่วน |
422 | Unprocessable Entity | รูปแบบคำขอถูกต้องแต่มีข้อผิดพลาดเชิงความหมาย (เช่น การตรวจสอบฟิลด์ล้มเหลว) | ตรวจสอบความถูกต้องพารามิเตอร์ RESTful API ตรวจสอบฟิลด์ที่จำเป็น ประเภทข้อมูล รูปแบบ |
429 | Too Many Requests | เกินขีดจำกัดอัตรา/ความถี่คำขอสูงเกินไป | ลดความถี่คำขอ เพิ่ม backoff แบบเลขชี้กำลัง ขอโควต้าที่มากขึ้น |
ข้อผิดพลาดเซิร์ฟเวอร์ที่พบบ่อยและรหัสส่วนขยาย Cloudflare
| รหัส | ความหมาย | สาเหตุที่พบบ่อย |
|---|---|---|
500 | Internal Server Error | ข้อยกเว้นในโค้ดเซิร์ฟเวอร์/ข้อผิดพลาดที่ไม่ได้จับ/การเชื่อมต่อฐานข้อมูลล้มเหลว/ข้อผิดพลาดการกำหนดค่า |
501 | Not Implemented | เซิร์ฟเวอร์ไม่รองรับฟังก์ชันที่ร้องขอ (เช่น เมธอด HTTP ที่ไม่รองรับ) |
502 | Bad Gateway | Reverse proxy (nginx/CDN) ได้รับการตอบกลับไม่ถูกต้องจาก upstream/กระบวนการ backend ขัดข้อง/PHP-FPM ไม่ได้เริ่มทำงาน |
503 | Service Unavailable | เซิร์ฟเวอร์โหลดมากเกินไป/อยู่ระหว่างบำรุงรักษา/บริการ backend ไม่ได้เริ่มทำงาน/พูลการเชื่อมต่อหมด |
504 | Gateway Timeout | Reverse proxy หมดเวลารอการตอบกลับจาก upstream/backend ประมวลผลช้าเกินไป/คิวรีฐานข้อมูลช้า |
520 | Web Server Returned Unknown Error (CF) | Cloudflare: ต้นทางส่งคืนการตอบกลับที่ไม่รู้จัก/ผิดปกติ (ข้อผิดพลาดโปรโตคอล/การตอบกลับว่าง/ไม่มีรหัสสถานะ) |
521 | Web Server Is Down (CF) | Cloudflare: เซิร์ฟเวอร์ต้นทางปฏิเสธการเชื่อมต่อ (ต้นทางออฟไลน์/ไฟร์วอลล์บล็อก IP CF) |
522 | Connection Timed Out (CF) | Cloudflare: ไม่สามารถสร้างการเชื่อมต่อ TCP กับต้นทางได้ (ไฟร์วอลล์ต้นทาง/security group/iptables) |
523 | Origin Is Unreachable (CF) | Cloudflare: IP ต้นทางไม่สามารถเข้าถึงได้ (เซิร์ฟเวอร์ต้นทางไม่มีอยู่/ปัญหาการกำหนดเส้นทาง) |
524 | A Timeout Occurred (CF) | Cloudflare: การเชื่อมต่อ TCP สำเร็จแต่ต้นทางหมดเวลาส่งคืนการตอบกลับ HTTP (>100วินาที) พบบ่อยกับคิวรีช้า/งานที่ใช้เวลานาน |
499 | Client Closed Request (Nginx) | รหัสส่วนขยาย Nginx: ไคลเอ็นต์ปิดการเชื่อมต่อก่อนที่เซิร์ฟเวอร์จะตอบกลับ (ผู้ใช้ยกเลิก/timeout ฟรอนต์เอนด์) |
Authoritative References
- ReferenceMDN - รหัสสถานะการตอบกลับ HTTP
- ReferenceRFC 9110 - มาตรฐานความหมาย HTTP
- Referenceวิกิพีเดีย - รหัสสถานะ HTTP
- Referenceการแก้ไขข้อผิดพลาด Cloudflare 5xx
- เครื่องมือสร้าง Authentication Header
- เครื่องมือวิเคราะห์ Cache-Control
- เครื่องมือวิเคราะห์ Content-Disposition
- เครื่องมือสร้าง CORS Header
- เครื่องมือตรวจสอบ CORS
- CSP Builder
- ตัวแปลง cURL เป็นโค้ด
- ตรวจสอบการแพร่กระจาย DNS ทั่วโลก
- ค้นหา DNS
- Forwarded Header Parser
- เครื่องมือสร้าง Hreflang Tag
- HSTS Analyzer
- ตัวแยกวิเคราะห์คุกกี้ HTTP
- HTTP Headers Checker
- HTTP Request Runner
- ค้นหารหัสสถานะ HTTP
- ค้นหา IP
- ตัวแปลง IPv4
- เครื่องมือขยายช่วง IPv4
- เครื่องมือจัดการที่อยู่ IPv6
- ตัวแยกวิเคราะห์ส่วนหัว Link
- ค้นหา MX Record
- ตรวจสอบพอร์ต
- สร้างพารามิเตอร์ URL
- ตัวแยกวิเคราะห์ส่วนหัว Rate Limit
- เครื่องมือตรวจสอบห่วงโซ่การเปลี่ยนเส้นทาง
- เครื่องมือสร้าง Robots.txt
- ตรวจสอบ Robots.txt
- ตรวจสอบส่วนหัวความปลอดภัย
- สร้าง Security.txt
- ตัวแยกวิเคราะห์ Set-Cookie
- ตรวจสอบเครือข่ายเว็บไซต์
- เครื่องมือสร้าง Sitemap
- ตรวจสอบ Sitemap
- ตัวตรวจสอบใบรับรอง SSL
- เครื่องคำนวณซับเน็ต
- ตัวแยกวิเคราะห์ URL
- ตัวแยกวิเคราะห์ User-Agent
- ตัวสร้างลิงก์ UTM
- ทดสอบ WebSocket
- What Is My IP?
- ค้นหา WHOIS