Error เว็บไซต์มีอะไรบ้าง
Error เว็บไซต์มีอะไรบ้าง
รู้ไว้ใช่ว่า Error Code บนหน้าเว็บบอกอะไร โปรแกรมเมอร์บ้าง? เจ้า error code ตัวที่ว่านี้ คือรหัสที่จะแสดงสถานะของ โปรโตคอล HTTP ( โปรโตคอล คือ ข้อกำหนดหรือข้อตกลงในการสื่อสารระหว่างคอมพิวเตอร์ หรือภาษาสื่อสารที่ใช้เป็น ภาษากลางในการสื่อสารระหว่างคอมพิวเตอร์ด้วยกัน )
แต่ส่วนเวลาที่เว็บใช้งานไม่ได้ ในฐานะ user เราก็คงไม่ต้องสนใจอะไรมากหนัก แค่บ่นโวยวายไปแต่พองาม (หรือเปล่า^^) เดี่ยวคนดูแลเว็บก็จะดำเนินการแก้ไขโดยด่วน! แต่ในฐานะคนเขียนโปรแกรมแล้ว โดยเฉพาะสายเว็บแล้วนั้น น่าจะรู้ไว้ใช่ว่า ….เพราะ error code พวกนี้มีประโยชน์ และช่วยหาสาเหตุว่าทำไมเว็บถึงตาย? จะได้แก้ปัญหาได้ถูกจุด ไม่ต้องงมเข็มในมหาสมุทรแล้วจร้าาา….
Error Code คืออะไร…
หนึ่งในปัญหาที่หลายๆคน ที่ชอบเล่นเว็บไซด์ต้องเคยเจอ นั่นคือ error code เวลาที่เราค้นหาข้อมูลในอินเตอร์เน็ต ผ่านโปรแกรมเว็บบราวเซอร์ต่างๆ วันดีคืนดี ก็จะพบตัวเลขแสดง error code โดยเฉพาะ error 404 คือหลายคนอาจไม่ทราบด้วยซ้ำว่า มันคืออะไร มีความหมายอย่างไร ถ้าเราได้รู้จักและทำความเข้าใจ error code ที่แสดงออกมาว่า มีสาเหตุมาจากอะไร ปัญหานี้เป็นเพราะคอมพิวเตอร์ของเราหรือเปล่า
สำหรับ status code พวกนี้จะมี 3 กลุ่มกว้างๆ ดังนี้
- รหัสขึ้นต้นด้วย 1xx Informational Request เรานั้นได้ถูกรับไปประมวลผลแล้วและตอนนี้กำลังทำงานต่อไปยัง Process ถัดไป
- รหัสขึ้นต้นด้วย 2xx Success คลาสนี้ Request เราถูกประมวลผลแล้วและการประมวลนั่นเสร็จสิ้น ไม่มี Error ใดๆ หรือพูดง่ายๆ ว่าเป็นการตอบพวกสถานะแบบ Success นั่นเอง ปกติคลาสนี้เราจะนิยมใช้ 200 เพื่อให้ขารับ Response จาก API รู้ว่าทำงานเสร็จแล้ว
- รหัสขึ้นต้นด้วย 3xx Redirection Request ของเรานั่นถูกส่งต่อไปเพื่อประมวลผลที่อื่น หรือเรียกไปที่อื่นๆ เพื่อต้องทำให้ Process นั่นมันสำเสร็จ
สำหรับ Error code จะมี 2 กลุ่มหลักๆ ได้แก่…
- รหัสขึ้นต้นด้วย 4xx Client Error
- รหัสขึ้นต้นด้วย 5xx Server Error
โดยครั้งนี้จะขอยกตัวอย่าง error code ที่ควรรู้ไว้เอาที่สำคัญๆ (จริงๆ ก็มีเยอะแต่ที่เห็นกันบ่อยๆ มีไม่กี่อัน)
รหัสขึ้นต้นด้วย Error 4xx Client Error
- ขอเริ่มจากหมวด 4xx ส่วนใหญ่ก็มักเป็นปัญหาในโค้ดเรานั้นแหละคะ
400 Bad Request หมายถึง Request ที่ส่งเข้ามายังเซิร์ฟเวอร์มันผิด หรือไม่สามารถทำตาม request นั้นได้
401 Unauthorized หมายถึง พิสูจน์ตัวตนล้มเหลว เช่น ใส่ username/password ผิด หรือเราไม่มีบัญชีสำหรับเว็บไซต์นั้น เป็นต้น
403 Forbidden การพยายามเข้าถึงหน้าเว็บเพจที่เราไม่มีสิทธิ์
404 Not Found หน้าเว็บนั้นไม่มีบนเซิร์ฟเวอร์ ซึ่ง error ตัวนี้พบเห็นบ่อยสุดแหละ โดยเรามักจะเห็นข้อความทำนองนี้ เช่น
“The page cannot be found.”
“The requested URL was not found on this server.”
405 Method Not Allowed เซิร์ฟเวอร์รู้จักวิธีการร้องขอ แต่ถูกปิดใช้งานและไม่สามารถใช้ได้ ตัวอย่างเช่น API อาจห้ามลบทรัพยากร ทั้งสองวิธีบังคับ GET และ HEAD จะต้องไม่ถูกปิดใช้งานและไม่ควรส่งคืนรหัสข้อผิดพลาดนี้
406 Not Acceptable การตอบสนองนี้จะถูกส่งเมื่อเว็บเซิร์ฟเวอร์หลังจากดำเนินการเจรจาต่อรองเนื้อหากับเซิร์ฟเวอร์แล้วจะไม่พบเนื้อหาใด ๆ ที่เป็นไปตามเกณฑ์ที่กำหนดโดยตัวแทนผู้ใช้
407 Proxy Authentication สิ่งนี้คล้ายกับ 401 แต่จำเป็นต้องมีการตรวจสอบความถูกต้องโดยพร็อกซี
408 Request Timeout เซิร์ฟเวอร์ไม่ตอบสนอง request มานานมาก จนหมดเวลา
409 Conflict การตอบสนองนี้จะถูกส่งเมื่อคำขอขัดแย้งกับสถานะปัจจุบันของเซิร์ฟเวอร์
410 Gone คำตอบนี้จะถูกส่งเมื่อเนื้อหาที่ร้องขอถูกลบอย่างถาวรจากเซิร์ฟเวอร์โดยไม่มีที่อยู่สำหรับส่งต่อ ลูกค้าคาดว่าจะลบแคชและลิงก์ไปยังทรัพยากร ข้อมูลจำเพาะ HTTP ตั้งใจว่าจะใช้รหัสสถานะนี้สำหรับ “บริการส่งเสริมการขายแบบ จำกัด เวลา” API ไม่ควรถูกบังคับให้ระบุทรัพยากรที่ถูกลบด้วยรหัสสถานะนี้
411 Length Required เซิร์ฟเวอร์ปฏิเสธคำขอเนื่องจาก Content-Length ไม่ได้กำหนดฟิลด์ส่วนหัวและเซิร์ฟเวอร์ต้องการ
412 Precondition Failed ลูกค้าได้ระบุเงื่อนไขเบื้องต้นในส่วนหัวของเซิร์ฟเวอร์ที่ไม่เป็นไปตาม
413 Payload Too Large เอนทิตีคำขอมีขนาดใหญ่กว่าขีด จำกัด ที่กำหนดโดยเซิร์ฟเวอร์ เซิร์ฟเวอร์อาจปิดการเชื่อมต่อหรือส่งคืน Retry-After ฟิลด์ส่วนหัว
414 URI Too Long URI ที่ลูกค้าร้องขอนั้นยาวเกินกว่าที่เซิร์ฟเวอร์เต็มใจจะตีความ
415 Unsupported Media Type เซิร์ฟเวอร์ไม่รองรับรูปแบบสื่อบันทึกของข้อมูลที่ร้องขอดังนั้นเซิร์ฟเวอร์ปฏิเสธคำขอ
416 Requested Range Not Satisfiable ช่วงที่ระบุโดย Range ฟิลด์ส่วนหัวในคำขอไม่สามารถเป็นจริงได้ เป็นไปได้ว่าช่วงนั้นอยู่นอกขนาดของข้อมูลของ URI เป้าหมาย
417 Expectation Failed รหัสการตอบสนองนี้หมายถึงความคาดหวังที่ระบุโดย Expect ฟิลด์ส่วนหัวคำขอไม่สามารถพบได้โดยเซิร์ฟเวอร์
รหัสขึ้นต้นด้วย 5xx Server Error
- error ในหมวด 5xx ส่วนใหญ่จะไม่เกี่ยวกับโค้ดเราเท่าไร แต่เวลาเกิดปัญหาทีไร ก็จะนึกถึงหน้าคนเขียนทุกที
500 Internal Server Error error นี้พบบ่อย จะเป็นปัญหาที่เกิดกับเซิร์ฟเวอร์ แบบไม่รู้สาเหตุ …มันเลยแจ้งว่าโจร 500 ปล้นเว็บไว้ก่อน ส่วนสาเหตุที่เกิด เช่น deploy ระบบล้มเหลว หรือเซิร์ฟเวอร์ล่ม ฯลฯ
502 Bad Gateway เครื่องเซิร์ฟเวอร์ที่ทำหน้าเป็น เกตเวย์หรือพร็อกซี่ ได้รับข้อความตอบรับที่ผิดพลาดจากเครื่องเซิร์ฟเวอร์ที่อยู่เบื้องหลัง …อธิบายแล้วงง เอาเป็นว่าความผิดพลาดที่เกิดระหว่างเซิร์ฟเวอร์ด้วยกันเองแล้วกัน
503 Service Unavailable เครื่องเซิร์ฟเวอร์ ยังใช้งานไม่ได้ อาจเกิดจาก คนใช้งานเยอะ ทำงานหนัก หรือเซิร์ฟเวอร์กำลังซ่อมบำรุงรักษา
504 Gateway Timeout การตอบสนองข้อผิดพลาดนี้จะได้รับเมื่อเซิร์ฟเวอร์ทำหน้าที่เป็นเกตเวย์และไม่สามารถรับการตอบสนองในเวลา
505 HTTP Version Not Supported เซิร์ฟเวอร์ไม่รองรับรุ่น HTTP ที่ใช้ในการร้องขอ
ขอทิ้งท้ายที่เป็นเชิงวิชาการสักนิด error ข้างต้นทั้งหมดนี้ เราเรียกเป็นภาษาวิชาการว่า HTTP Status Code ซึ่งเป็น error code มาตราฐานที่เราใช้กับเว็บเซิร์ฟเวอร์ที่เราใช้งานบนโลกออนไลน์ หรือบนอินเตอร์เน็ต นั่นเอง
…เราหวังว่า error code พวกนี้จะมีประโยชน์ และช่วยหาสาเหตุ แก้ปัญหาบนหน้าเว็บของทุกท่านได้ถูกจุดนะค่ะ