خطأ HTTP 401 مقابل خطأ HTTP 403 - شرح ردود رمز الحالة

لقد قمنا بتغطية رمز خطأ HTTP 403 (محظور) ببعض التفاصيل من قبل ، ولكنه يحتوي أيضًا على شقيق متطابق تقريبًا.

إذن ما هو الفرق بالضبط بين رموز الحالة 401 (غير مصرح به) و 403 (ممنوع)؟ بالتأكيد يقصدون نفس الشيء؟ دعونا نلقي نظرة فاحصة!

معايير RFC

أحدث معيار RFC الذي يحدد 401 (غير مصرح به) هو RFC 7235

يشير رمز الحالة 401 (غير مصرح به) إلى أن الطلب لم يتم تطبيقه لأنه يفتقر إلى بيانات اعتماد مصادقة صالحة للمورد الهدف ... يجوز لوكيل المستخدم تكرار الطلب مع حقل رأس تفويض جديد أو مستبدل.

بينما تم تعريف 403 (محظور) مؤخرًا في RFC 7231

يشير رمز الحالة 403 (ممنوع) إلى أن الخادم فهم الطلب ولكنه يرفض الإذن به ... إذا تم تقديم بيانات اعتماد المصادقة في الطلب ، فيعتبرها الخادم غير كافية لمنح الوصول.

الأسباب الشائعة

كما هو مذكور في المقالة السابقة ، يمكن أن ينتج الخطأ 403 عندما يقوم المستخدم بتسجيل الدخول ولكن ليس لديه امتيازات كافية للوصول إلى المورد المطلوب. على سبيل المثال ، قد يحاول مستخدم عام تحميل مسار "المسؤول".

من ناحية أخرى ، فإن أكثر الأوقات وضوحًا التي تواجه فيها خطأ 401 هي عندما لا تقوم بتسجيل الدخول على الإطلاق ، أو عندما تكون قد قدمت كلمة مرور غير صحيحة.

هذان هما السببان الأكثر شيوعًا لهذا الزوج من الأخطاء.

أسباب أقل شيوعًا

هناك بعض الحالات التي لا يكون فيها الأمر بهذه البساطة.

يمكن أن تحدث أخطاء 403 بسبب القيود التي لا تعتمد كليًا على بيانات اعتماد المستخدم الذي قام بتسجيل الدخول.

على سبيل المثال ، قد يكون الخادم قد قام بتأمين موارد معينة للسماح فقط بالوصول من نطاق محدد مسبقًا من عناوين IP ، أو قد يستخدم الحظر الجغرافي. يمكن التحايل على هذا الأخير باستخدام VPN.

يمكن أن تحدث أخطاء 401 حتى إذا قام المستخدم بإدخال بيانات الاعتماد الصحيحة. هذا أمر نادر الحدوث ، وقد يكون شيئًا ما تواجهه حقًا فقط أثناء تطوير نهاياتك الخلفية المصادق عليها. ولكن إذا كان رأس التفويض تالفًا ، فسيعرض 401.

على سبيل المثال ، قد يكون لديك JWT (JSON Web Token) الذي تريد تضمينه في عنوان الطلب ، والذي يتوقع التنسيق Authorization: Bearer eyJhbGci......yJV_adQssw5c. إذا نسيت كلمة "Bearer" قبل JWT ، فستواجه الخطأ 401.

لقد واجهت هذه المشكلة بنفسي عند اختبار واجهات برمجة التطبيقات قيد التطوير باستخدام Postman ونسيت البنية الصحيحة لرؤوس المصادقة!

هذا هو

آمل أن يزيل هذا أي لبس يحيط بهذه الأخطاء المشابهة جدًا.

إذا وجدت هذا مفيدًا ، أو ترغب في تحدي أي شيء أثير هنا أو تمديده ، فلا تتردد في الاتصال بي على TwitterJacksonBates.