תגובות מסוג Client Error מציינות שהבקשה ששלח הלקוח מכילה מידע שגוי ולא ניתן לעבד אותה בהצלחה על ידי השרת. הן נפוצות במקרים של שגיאות קלט (הכנסת נתונים כמו אימייל, סיסמא וכדומה שהם לא נכונים), הרשאות, או נתיבים (endpoints) לא נכונים. דוגמאות ל-Client error responses:
400 Bad Request - שגיאה זו מופיעה כאשר השרת לא מבין את הבקשה שלכם כי משהו לא בסדר במידע ששלחתם אליו. לדוגמה, אם אתם תנסו לשלוח טופס באתר אינטרנט אבל שכחתם למלא את כל השדות הנדרשים, ייתכן שתקבלו 400 Bad Request.
401 Unauthorized - זה אומר שהמשתמש רצה לבצע פעולה מסויימת או לגשת למשאב מסויים אבל השרת דרש קודם כל לאמת את המשתמש, אבל המשתמש לא סיפק או לא הזדהה במערכת בדרך של login או כל הזדהות אחרת כמו טוקן (token). למי שלא מכיר, token הוא כמו תעודת זהות, שמשמשת לאימות זהות של המשתמש ולאפשר לו גישה למשאבים מוגנים. במילים פשוטות, המשתמש צריך להזדהות כדי לקבל גישה למשאב. אם אתם רוצים לקרוא עוד על אימות והרשאות באינטרנט, כנסו למאמר שלנו - אימות והרשאות באינטרנט בעזרת JWT.
403 Forbidden - הבקשה נקלטת והמשתמש מזוהה, אבל המשתמש לא מורשה לגשת למשאב המבוקש. כלומר, השרת הבין את הבקשה אך מסרב לאשר אותה מסיבות שונות, כמו הרשאות לא מתאימות. 403 Forbidden - הבקשה נקלטת והמשתמש מזוהה, אבל המשתמש לא מורשה לגשת למשאב המבוקש. כלומר, השרת הבין את הבקשה אך מסרב לאשר אותה מסיבות שונות, כמו הרשאות לא מתאימות. עכשיו, בדרך כלל הרבה מתכנתים מתבלבלים בין 403 Forbidden לבין 401 Unauthorized, אז בואו נעשה סדר כדי להבין טוב יותר מה אומרת כל בעיה.
ההבדל בין 401 ל-403
נניח שאתם רוצים לפרסם פוסט בקבוצה בפייסבוק. אם אתם לא מחוברים לחשבון שלכם, פייסבוק לא יכול לזהות אתכם כמשתמשים מורשים במערכת ולכן הוא יחזיר שגיאת 401 Unauthorized. השגיאה מציינת שאתם צריכים להתחבר לחשבון שלכם כדי להמשיך.
לאחר שאתם מחוברים, פייסבוק מזהה אתכם כמשתמשים ואתם יכולים לפרסם פוסטים בקבוצה. אבל, אם תנסו למחוק תגובה של משתמש אחר בקבוצה, ואין לכם הרשאות מנהל, פייסבוק יחזיר שגיאת 403 Forbidden. השגיאה מציינת שאתם מזוהים אבל אין לכם הרשאה לבצע את הפעולה שרציתם.
404 Not Found - השגיאה מתרחשת כאשר המשאב או הדף שהמשתמש מנסה לגשת אליו אינו קיים על השרת. כלומר זה כמו ללכת למסעדה ולבקש לקנות רכב. השרת מסוגל להבין את הבקשה שלכם, אבל המשאב המבוקש (קניית רכב) לא קיימת בשרת (במסעדה). בדרך כלל אתם תראו את זה כשאתם מנסים לבקר בדף באתר, אבל הדף הזה לא קיים.
405 Method Not Allowed - השגיאה מתרחשת כאשר המשתמש, משתמש ב-HTTP Method (כמו GET, POST, PUT, DELETE וכו') שלא נתמכת עבור המשאב המבוקש בשרת. לדוגמה, אם יש לכם משאב (endpoint) שמקבל רק בקשות GET ואתם מנסים לשלוח בקשת POST אליו, השרת יחזיר שגיאת 405 שמציין שה-HTTP Method שנבחרה לא נתמכת עבור המשאב הזה.
406 Not Acceptable - השגיאה מתרחשת כאשר השרת לא יכול לספק תגובה שמתאימה למה שהמשתמש רצה לקבל. לדוגמה, אם הלקוח מבקש תוכן בפורמט מסוים כמו PDF, אבל השרת יכול לתת את המידע הזה רק בפורמט JSON אז השרת יחזיר שגיאת 406.
409 Conflict - השגיאה מתרחשת כאשר יש סתירה או חפיפה במשאב שהמשתמש מנסה ליצור או לעדכן, לדוגמה, כאשר שני משתמשים מנסים להתחבר לחשבון אחד בו זמנית, אחד מהם יקבל שגיאת 409, מציינת שיש קונפליקט בנתונים.
410 Gone - השגיאה מתרחשת כאשר המשאב שהמשתמש מנסה לגשת אליו היה זמין בעבר אך כעת הוסר לצמיתות מהשרת. כלומר אם יש דף אינטרנט שהיה זמין בעבר אך נמחק לצמיתות, בקשה לכתובת ה-URL של הדף הזה תחזיר שגיאת 410 מהשרת.
429 Too Many Requests - השגיאה מתרחשת כאשר המשתמש עשה יותר בקשות מהמותר על ידי השרת. לדוגמה, אם השרת מוגבל ל-100 בקשות לדקה והמשתמש שלח 150 בקשות בדקה, השרת יחזיר שגיאת 429 Too Many Requests.