รหัส Error บนเว็บไซต์ (101,200,301,304,..)
ปกติแล้วการทำงาน เขียนโปรแกรมรวมไปถึงคนที่ใช้ชีวิตประจำวันบนโลก internet มักจะเจอ error ต่างๆบนเว็บไซต์ ผมก็คนหนึ่งที่มักจะเจอบ่อยๆ เคยแอบสงสัยและได้ถามใครต่อหลายๆคนว่า error ตัวเลขรหัส ที่แสดงออกมา บ่งบอกถึงอะไร
เพราะผมเข้าใจว่ามันต้องมีความหมายในตัวของมันเองไม่งั้นมันก็คงบอกแค่ error ก็เพียงพอ ไม่จำเป็นต้องใส่ ตัวเลข ด้วยความอยากรู้จดต้องค้นหาเอง ที่จริงข้อมูลนี้ผมได้เคยหาไว้ค่อนข้างที่จะนานแล้วครับ พอดีเห็นว่ามีประโยชน์เลยเอามาเขียนอีกครั้งที่ siammodify.com เวลาต้องการรู้จะได้ไม่ต้องเข้ามาหาอีกครั้ง
สำหรับรหัส error ดังกล่าวมีค่อนข้างจะเยอะครับ ผมเลยขอแบ่งออกเป็นตอนนะครับ ขอแบ่งเป็น 2 ตอนแล้วกันครับสำหรับบทความนี้ผมจะขอพูดถึง error 1xx, 2xx , 3xx ก่อนแล้วกันนะครับ
1xx ข้อมูลทั่วไป
หัสสถานภาพกลุ่มนี้หมายถึง “เครื่องให้บริการได้รับการร้องขอแล้ว สามารถดำเนินการต่อไปได้” ใช้เป็นข้อความตอบรับชั่วคราว ซึ่งจะประกอบด้วยส่วนหัว Status-Line กับส่วนหัวอื่น ๆ เพิ่มเติม และจบด้วยบรรทัดว่าง แต่เนื่องจาก HTTP/1.0 ไม่ได้กำหนดรหัส 1xx เอาไว้ ดังนั้นเครื่องแม่ข่ายต้องไม่ส่งการตอบรับด้วยรหัส 1xx ไปยังเครื่องลูกข่ายที่เป็น HTTP/1.0 เว้นแต่ว่าจะอยู่ภายใต้เงื่อนไขที่เกี่ยวกับการทดลอง
100 Continue
เครื่องให้บริการได้รับการร้องขอแล้ว และเครื่องลูกข่ายควรจะส่งเนื้อหาตามออกไปกับข้อความร้องขอ (ในกรณีที่เนื้อหาจำเป็นต้องส่งไปกับการร้องขอ เช่นข้อความร้องขอแบบ POST) ถ้าเนื้อหาในข้อความร้องขอมีขนาดใหญ่ การส่งข้อมูลไปยังเครื่องแม่ข่ายอาจเกิดการชะงัก การร้องขออาจถูกตัดไปเสียก่อนเพราะไม่มีส่วนหัวที่เหมาะสม ดังนั้นเพื่อให้เครื่องแม่ข่ายสามารถตรวจสอบได้ว่าการร้องขอนั้นจะเป็นที่ ยอมรับได้หรือไม่ เครื่องลูกข่ายจะต้องส่งส่วนหัว Expect: 100-continue ไปในข้อความร้องขอครั้งแรก และตรวจสอบว่ารหัสสถานภาพที่ได้มาจากข้อความตอบรับเป็น 100 Continue ก่อนดำเนินการส่งข้อมูลต่อไป (หากล้มเหลว จะได้รับรหัสเป็น 417 Expectation Failed และหยุดดำเนินการส่งข้อมูล)
101 Switching Protocols
เกิดจากผู้ร้องขอที่ได้สอบถามให้เครื่องแม่ข่ายเปลี่ยนโพรโทคอลในการสื่อสาร เมื่อเครื่องแม่ข่ายรับทราบก็จะคืนรหัสสถานภาพนี้มายังผู้ร้องขอ แล้วจะดำเนินการเปลี่ยนโพรโทคอลตาม
102 Processing
เครื่องให้บริการกำลังประมวลผล
2xx การร้องขอสำเร็จ
รหัสสถานภาพกลุ่มนี้หมายถึง “การดำเนินการที่ร้องขอได้รับแล้ว เป็นที่เข้าใจแล้ว และได้ยอมรับแล้ว” ใช้แสดงว่าการร้องขอจากเครื่องลูกข่ายได้ดำเนินการสำเร็จแล้ว
200 OK
เป็นรหัสตอบรับมาตรฐานสำหรับการร้องขอที่สำเร็จ ข้อความตอบรับที่แท้จริงอาจแตกต่างกันออกไปตามคำสั่งร้องขอที่ใช้ ในการร้องขอแบบ GET เนื้อหาในข้อความตอบรับจะเป็นเนื้อหาที่เกี่ยวข้องกับทรัพยากรที่ร้องขอ ส่วนในการร้องขอแบบ POST เนื้อหาในข้อความตอบรับจะเป็นการอธิบายทรัพยากรหรือผลลัพธ์จากการดำเนินการ ดังกล่าว เป็นต้น
201 Created
การร้องขอได้ดำเนินการแล้ว ซึ่งได้ผลลัพธ์เป็นทรัพยากรที่สร้างขึ้นใหม่บนเครื่องให้บริการ
202 Accepted
การร้องขอได้รับแล้วเพื่อดำเนินการ แต่การดำเนินการนั้นยังไม่เสร็จสิ้น ซึ่งไม่จำเป็นต้องส่งการร้องขอใหม่ในช่วงเวลาดังกล่าว เพราะว่าเครื่องแม่ข่ายอาจยังไม่รับการร้องขอในขณะนั้น
203 Non-Authoritative Information
การร้องขอได้ดำเนินการสำเร็จแล้ว แต่คืนผลลัพธ์เป็นข้อมูลที่อาจจะมาจากแหล่งอื่น (ตั้งแต่ HTTP/1.1)
204 No Content
การร้องขอได้ดำเนินการสำเร็จแล้ว แต่ไม่มีเนื้อหาใด ๆ คืนกลับมา
205 Reset Content
การร้องขอได้ดำเนินการสำเร็จแล้ว แต่ไม่มีเนื้อหาใด ๆ คืนกลับมา ต่างจากรหัส 204 ตรงที่การตอบรับนี้ ผู้ร้องขอจำเป็นต้องล้างมุมมองของเอกสาร
206 Partial Content
เครื่องแม่ข่ายจะส่งเนื้อหาจากทรัพยากรเพียงบางส่วน ตามช่วงไบต์ในส่วนหัว Range ที่เครื่องลูกข่ายร้องขอไป การส่งทรัพยากรเพียงบางส่วนนี้มักใช้เป็นประโยชน์โดยโปรแกรมช่วยดาวน์โหลด เพื่อการดาวน์โหลดข้อมูลต่อหรือแบ่งการดาวน์โหลดออกเป็นหลายกระแสพร้อมกัน
207 Multi-Status
เนื้อหาในข้อความที่เป็นเอกซ์เอ็มแอล อาจมีรหัสสถานภาพในการตอบรับที่แยกจากกันจำนวนหนึ่ง ขึ้นอยู่กับว่ามีข้อความร้องขอย่อยมากเท่าใด (WebDAV)
3xx การเปลี่ยนทาง
รหัสสถานภาพกลุ่มนี้หมายถึง “เครื่องลูกข่ายอาจต้องมีการกระทำอื่นเพิ่มเติม เพื่อที่จะทำการร้องขอนั้นให้สำเร็จ” แสดงว่าโปรแกรมตัวแทนผู้ใช้จำเป็นต้องมีการดำเนินการอื่นเพิ่มเติม ซึ่งอาจทำได้เองโดยไม่จำเป็นต้องโต้ตอบกับผู้ใช้ ถ้าคำสั่งร้องขอครั้งที่สองเป็น GET หรือ HEAD นอกจากนี้ตัวแทนผู้ใช้ไม่ควรเปลี่ยนทางมากกว่าห้าครั้ง เพราะว่าการทำเช่นนั้นอาจถูกพิจารณาว่าเป็นวงวนไม่รู้จบ
300 Multiple Choices
แสดงตัวเลือกสำหรับทรัพยากรให้เครื่องลูกข่ายเลือกตามที่ต้องการ ตัวอย่างเช่น รูปแบบที่แตกต่างกันสำหรับวิดีโอ รายชื่อไฟล์ที่มีส่วนขยายแตกต่างกัน หรือการแก้ความกำกวมความหมายของคำ
301 Moved Permanently
บอกให้เครื่องลูกข่ายทราบว่า การร้องขอครั้งนี้และครั้งต่อ ๆ ไปควรจะเปลี่ยนทางไปยังตัวระบุแหล่งทรัพยากรสากล (URI) ที่ให้ไว้ เครื่องแม่ข่ายจะไม่เป็นผู้เปลี่ยนทางให้
302 Found
รหัสนี้นิยมใช้เป็นการเปลี่ยนทางบนหน้าเว็บมากที่สุด แต่ก็เป็นตัวอย่างหนึ่งในทางปฏิบัติที่ขัดกับมาตรฐาน แต่เดิมใน HTTP/1.0 วลีดังกล่าวใช้ว่า “Moved Temporarily” เพื่อเป็นการเปลี่ยนทางชั่วคราว แต่หลายเบราว์เซอร์กลับนำไปทำเป็นรหัส 303 See Other แทน ดังนั้นในรุ่น HTTP/1.1 จึงเพิ่มรหัส 303 และ 307 เข้าไปเพื่อแยกแยะพฤติกรรมการใช้งานทั้งสอง แล้วเปลี่ยนวลีเหตุผลของรหัสนี้เป็น “Found” อย่างไรก็ตาม เว็บแอปพลิเคชันและเฟรมเวิร์กส่วนใหญ่ก็ยังใช้รหัส 302 ในลักษณะเดียวกับรหัส 303
303 See Other
เนื้อหาที่ร้องขอสามารถพบได้จากตัวระบุในแหล่งอื่นด้วยคำสั่ง GET แต่ถ้าหากแหล่งอื่นนั้นใช้ PUT เครื่องลูกข่ายจะต้องถือว่าเครื่องแม่ข่ายได้รับข้อมูลแล้ว และการเปลี่ยนทางควรจะกระทำโดยส่งข้อความ GET แยกออกไปต่างหาก (ตั้งแต่ HTTP/1.1)
304 Not Modified
ทรัพยากรที่ร้องขอยังไม่มีการปรับปรุงเพิ่มเติมหลังจากการร้องขอครั้งล่าสุด โดยปกติแล้วเครื่องลูกข่ายเอชทีทีพีจะส่งส่วนหัว If-Modified-Since มาด้วยเพื่อให้เครื่องแม่ข่ายเปรียบเทียบเวลา การใช้ส่วนหัวนี้ให้เป็นประโยชน์ช่วยลดแบนด์วิดท์ และลดการประมวลผลซ้ำซ้อนทั้งทางฝั่งแม่ข่ายและลูกข่าย
305 Use Proxy
แจ้งไปยังเครื่องลูกข่ายว่าควรใช้พร็อกซี ตัวแทนผู้ใช้หลายโปรแกรม อาทิเบราว์เซอร์ของมอซิลลา และอินเทอร์เน็ตเอกซ์พลอเรอร์ ยังดำเนินการกับรหัสตอบรับนี้ไม่ถูกต้อง ด้วยเหตุผลหลักในด้านความปลอดภัย (ตั้งแต่ HTTP/1.1)
306 Switch Proxy
แจ้งไปยังเครื่องลูกข่ายว่าควรเปลี่ยนพร็อกซีที่ใช้ ปัจจุบันเลิกใช้งานแล้ว
307 Temporary Redirect
ข้อความร้องขอที่ส่งเข้ามาในครั้งนี้ ควรจะส่งซ้ำไปยังตัวระบุแหล่งทรัพยากรสากลที่กำหนดให้ แต่ครั้งหน้าก็อาจสามารถส่งมายังที่เดิมได้ ต่างกับรหัส 303 ตรงที่ข้อความร้องขอจะไม่มีการเปลี่ยนแปลง นั่นคือข้อความร้องขอแบบ POST ควรจะเหมือนเดิม เพียงแค่ส่งไปยังแหล่งอื่นแทนเท่านั้น (ตั้งแต่ HTTP/1.1)
สำหรับ error ยังมีหลัก 4 และ หลัก 5 เหลืออยู่นะครับในที่นี้รออ่านต่อที่บทความตอน 2 นะครับ เนื่องด้วยเนื้อหาค่อนข้างจะยาว เลยขอแบ่งเป็นอีกตอนนึงครับ บทความนี้ได้นำมาจาก wiki ครับหากใครสนใจดูที่ต้นฉบับสามารถเปิดดูได้ใน wiki นะครับ