405 طريقة غير مسموح بها: ما هي وكيفية اصلاحها
أسلوب 405 غير المسموح به هو
HTTP response status code
يشير إلى أن طريقة HTTP المحددة للطلب تم استلامها والتعرف عليها من قبل الخادم ، لكن الخادم رفض تلك الطريقة الخاصة للمورد المطلوب. تختلف هذه الرسالة بوضوح عن الشفرة 404 Not Found
التي نظرنا إليها منذ فترة . يشير خطأ 404 Not Found
إلى أنه404 Not Found
على المورد المطلوب ، وغالبًا ما يكون ناتجًا عن عنوان URL غير صحيح ، أو يحاول الوصول إلى مورد لا يملك العميل أذونات كافية. وعلى العكس ، تؤكد استجابة رمز 405
أن المورد المطلوب صالح وموجود ،ولكن العميل استخدم طريقة HTTP غير مقبولة أثناء الطلب.
مثل معظم رموز استجابة HTTP - خاصة لتلك التي تشير إلى وجود خطأ - قد يكون من الصعب تعقب واستجابة إصلاح
405 Method Not Allowed
. مع وجود مجموعة محتملة من أكثر من 50 رمز حالة تمثل العلاقة المعقدة بين العميل ، وتطبيق الويب ، وخادم الويب ، وغالبًا خدمات ويب متعددة تابعة لجهات خارجية ، فإن تحديد سبب رمز الحالة المعين يمكن أن يكون تحديًا في ظل أفضل من الظروف.
سنقوم في هذه المقالة بفحص
405 Method Not Allowed
بمزيد من التفصيل من خلال النظر في ما قد يتسبب في رسالة ، بالإضافة إلى مجموعة من النصائح لتشخيص وتصحيح مظهر هذا الخطأ داخل التطبيق الخاص بك. سنقوم حتى بفحص عدد من أنظمة إدارة المحتوى الأكثر شيوعًا ( CMSs
) لمناطق المشاكل المحتملة التي قد تتسبب في إنشاء موقع الويب الخاص بك 405 Method Not Allowed
أسلوبًا 405 Method Not Allowed
بشكل غير متوقع. دعونا الغوص في!الخادم أو جانب العميل؟
تعتبر جميع رموز حالة استجابة HTTP الموجودة في فئة
4xx
client error responses
. تتناقض هذه الفئة مع أخطاء تصنيف 5xx
، مثل 503 Service Unavailable Error
الذي استكشفته قبل بضعة أشهر، والتي تعتبر server error responses
. ومع ذلك ، فإن ظهور خطأ 4xx
لا يعني بالضرورة أن المشكلة تقع على جانب العميل ، حيث "العميل" هو متصفح الويب أو الجهاز المستخدم للوصول إلى التطبيق. في كثير من الأحيان ، إذا كنت تحاول تشخيص مشكلة داخل التطبيق الخاص بك ، يمكنك تجاهل معظم التعليمات البرمجية والمكونات من جانب العميل ، مثل HTML وأوراق الأنماط المتتالية (CSS) وجافا سكريبت العميل وما إلى ذلك. هذا لا ينطبق فقطعلى مواقع الويب ، إما. يتم تشغيل العديد من تطبيقات الهواتف الذكية ، والتي تنفذ واجهة مستخدم حديثة المظهر ، من خلال تطبيق ويب طبيعي خلف الكواليس مخفي ببساطة عن المستخدم.
من ناحية أخرى ، هذا لا يستبعد تماما الخادم كما هو السبب الحقيقي ل
405 Method Not Allowed
. في بعض الحالات ، قد تتم تهيئة الخادم بشكل خاطئ ويتعامل مع الطلبات بشكل غير صحيح ، مما قد يؤدي إلى استجابات رموز 405
ومشكلات أخرى في توجيه حركة المرور. سنقوم باستكشاف بعض هذه السيناريوهات (والحلول المحتملة) في الأسفل ، ولكن يجب أن تدرك أنه على الرغم من أن 405 Method Not Allowed
تعتبر client error response
، فإنها لا تعني بطبيعتها أنه يمكننا استبعاد العميل أو العميل. الخادم باعتباره الجاني في هذا السيناريو. في هذه السيناريوهات ، ما زال server
هو كائن الشبكة الذي ينتج 405 Method Not Allowed
به ويعيده كرمز استجابة HTTP إلى العميل ، ولكن قد يكون السبب هو أن العميل يسبب المشكلة بطريقة ما.ابدأ باستخدام النسخ الاحتياطي الشامل للتطبيق
كما هو الحال مع أي شيء ، من الأفضل لعبها بأمان في البداية بدلاً من شدّ شيء ما والتخلص منه في وقت لاحق على الطريق. على هذا النحو ، فمن الأهمية بمكان أن تقوم بإجراء نسخة احتياطية كاملة من التطبيق ، وقاعدة البيانات ، وجميع المكونات الأخرى لموقع الويب الخاص بك أو التطبيق قبل محاولة أي إصلاحات أو تغييرات على النظام.والأفضل من ذلك ، إذا كانت لديك الإمكانية ، فقم بإنشاء نسخة كاملة من التطبيق والتقط النسخة على خادم
staging
ثانوي غير نشط أو يتعذر الوصول إليه من قبل الجمهور. سيعطيك هذا اختبارًا نظيفًا لاختبار جميع الإصلاحات المحتملة لحل المشكلة ، دون تهديد أمان طلبك أو قدسية التطبيق المباشر.تشخيص 405 طريقة غير مسموح بها
كما ذكرنا في المقدمة ، يشير
405 Method Not Allowed
إلى أن وكيل المستخدم (متصفح الويب ، في معظم الحالات) قد طلب موردًا صالحًا باستخدام طريقة HTTP غير صالحة. هذا يمكن أن يحدث في ظروف مختلفة قليلة:- يرسل وكيل المستخدم بطريق الخطأ طريقة HTTP غير صحيحة.
- يتوقع الخادم عددًا قليلاً فقط من طرق HTTP الصالحة للمورد المطلوب.
يوجد حاليًا 9 طرق HTTP ممكنة يمكن استخدامها ، على الرغم من أن البعض منها أكثر انتشارًا من غيرها. على سبيل المثال ، تعالج طريقة
GET
الغالبية العظمى من الطلبات المقدمة على الإنترنت ، حيث يتم استخدامها فقطلاسترداد البيانات (أي "الحصول على" صفحة أو مورد). طريقة POST
هي الطريقة الثانية الأكثر شيوعًا ، ويتم استخدامها عادةً لإرسال البيانات إلى الخادم (مثل بيانات اعتماد تسجيل الدخول).
نظرًا لأن كل طريقة من طرق HTTP الممكنة لها استخدامات مقصودة خاصة بها ، فغالبًا ما يكون من غير المنطقي أن يقبل الخادم طلبات باستخدام طرق معينة لموارد معينة. على سبيل المثال ، قد يوجد مورد في عنوان URL
https://airbrake.io/users/create
، والذي يستخدمه الخادم لإنشاء مستخدم جديد عندما يتم إرسال بيانات اعتماد صالحة عبر طلب أسلوب HTTP POST
. لذلك ، في مثل هذا السيناريو ، لا معنى للملقم بقبول طلبGET
على ذلك المورد / عنوان URL ، لذلك قد يستجيب مع رمز 405 Method Not Allowed
عند تقديم مثل هذا الطلب.استكشاف الأخطاء وإصلاحها على جانب العميل
نظرًا لأن
405 Method Not Allowed
هو رمز client error response
، فمن الأفضل أن تبدأ باستكشاف المشكلات المحتملة من جانب العميل والتي قد تسبب هذا الخطأ. إليك بعض النصائح التي يمكنك تجربتها على المتصفح أو الجهاز الذي يعطيك مشكلات.تحقق من عنوان URL المطلوب
السبب الأكثر شيوعًا لـ
405 Method Not Allowed
هو ببساطة إدخال عنوان URL غير صحيح. كما تمت مناقشته من قبل ، يتم تأمين العديد من خوادم الويب بإحكام لمنع الوصول إلى عناوين URL غير صحيحة لا يكون الخادم مستعدًا لتوفير الوصول إليها. قد يكون هذا أي شيء من محاولة الوصول إلى دليل ملف عبر عنوان URL لمحاولة الوصول إلى صفحة خاصة مخصصة للمستخدمين الآخرين. نظرًا لأن رموز 405
ليست شائعة مثل رموز 404
،فقد يعني ظهور 405
أن عنوان URL المطلوب صالح ، ولكنه يُستخدم عادةً. في كلتا الحالتين ، من المستحسن التحقق من عنوان URL الدقيق الذي يعرض الخطأ 405 Method Not Allowed
للتأكد من أنه المورد المقصود.تصحيح المنصات المشتركة
إذا كنت تقوم بتشغيل حزم برمجية شائعة على الخادم الذي يستجيب
405 Method Not Allowed
، فقد ترغب في البدء من خلال النظر في استقرار ووظائف هذه الأنظمة الأساسية أولاً. عادةً ما يتم اختبار أنظمة إدارة المحتوى الأكثر شيوعًا - مثل WordPress و Joomla! و Drupal - بشكل جيد خارج المربع ، ولكن بمجرد بدء إجراء تعديلات على الإضافات الأساسية أو شفرة PHP
(اللغة التي تحتوي على جميع إدارة المحتوى الحديثة تقريبًا مكتوبة في) ، من السهل جداً أن تسبب مشكلة غير متوقعة تنتج في 405 Method Not Allowed
.
هناك بعض النصائح أدناه التي تهدف إلى مساعدتك في استكشاف بعض من منصات البرامج الشائعة هذه وإصلاحها.
التراجع الأخيرة ترقيات
إذا قمت مؤخرًا بتحديث نظام إدارة المحتوى نفسه قبل ظهور
405 Method Not Allowed
، فقد ترغب في العودة إلى الإصدار السابق الذي قمت بتثبيته عندما كانت الأمور تسير على ما يرام. وبالمثل ، قد تتسبب أيضًا أي إضافات أو وحدات قد قمت بترقيتها مؤخرًا في حدوث مشكلات على جانب الخادم ، لذا قد يساعد الرجوع إلى الإصدارات السابقة من تلك الإصدارات أيضًا. للحصول على المساعدة في هذه المهمة ، ما عليك سوى "الرجوع إلى إصدار سابق من Google [PLATFORM_NAME]" ومتابعة ذلك. ومع ذلك ، في بعض الحالات ، لا توفر بعض أنظمة إدارة المحتوى حقًا إمكانية الرجوع إلى إصدار أقدم ، مما يشير إلى أنها تعتبر التطبيق الأساسي ، بالإضافة إلى كل إصدار جديد تم إصداره ، مستقرًا جدًا وخاليًا من الأخطاء. هذا هو الحال بالنسبة للمنصات الأكثر شعبية ، لذا لا تخف إذا لم تجد طريقة سهلة لإعادة النظام الأساسي إلى إصدار أقدم.إلغاء تثبيت ملحقات جديدة أو وحدات نمطية أو مكونات إضافية
اعتمادًا على نظام إدارة المحتوى المعين الذي يستخدمه التطبيق الخاص بك ، سيكون الاسم الدقيق لهذه المكونات مختلفًا ، ولكنه يخدم نفس الغرض عبر كل نظام: تحسين إمكانات وميزات النظام الأساسي بما يتجاوز قدراته عادةً على الخروج من الصندوق . ولكن كن حذرًا: يمكن لهذه الإضافات ، بشكل أو بآخر ، التحكم الكامل في النظام وإجراء أي تغييرات تقريبًا ، سواء أكانت على شفرة
PHP
أو HTML أو CSS أو جافا سكريبت أو قاعدة البيانات. على هذا النحو ، قد يكون من الحكمة إزالة أية إضافات جديدة ربما تمت إضافتها مؤخرًا. مرة أخرى ، فإن اسم ملحق Google للوثائق الرسمية والمساعدة في هذه العملية.تحقق من تغييرات قاعدة البيانات غير المتوقعة
تجدر الإشارة إلى أنه حتى في حالة إزالة تثبيت من خلال لوحة التحكم في نظام إدارة المحتوى ، فإن هذا لا يضمن أن التغييرات التي تم إجراؤها من خلال الإضافة قد تمت إعادتها بالكامل. وينطبق هذا بشكل خاص على العديد من إضافات WordPress ، والتي يتم منحها تفويضا مطلقا داخل التطبيق ، بما في ذلك حقوق الوصول الكامل لقاعدة البيانات. ما لم يقم مؤلف التمديد برسم مثل هذه الأشياء بشكل صريح ، فهناك سيناريوهات حيث قد يقوم الملحق بتعديل سجلات قاعدة البيانات التي لا "تنتمي" إلى الإضافة نفسها ، ولكن يتم إنشاؤها وإدارتها بدلاً من ذلك بواسطة ملحقات أخرى (أو حتى CMS الأساسية نفسها). في هذه السيناريوهات ، قد لا يعرف الامتداد كيفية الرجوع إلى التعديلات في سجلات قاعدة البيانات ، لذا سيتجاهل مثل هذه الأشياء أثناء إلغاء التثبيت. يمكن أن يكون تشخيص مثل هذه المشكلات صعبًا ، لكنني واجهت مثل هذه السيناريوهات عدة مرات ، لذا فإن أفضل طريقة للعمل ، بافتراض أنك مقتنع بشكل معقول بالامتداد هو السبب المحتمل
405 Method Not Allowed
، هو فتح قاعدة البيانات و البحث يدويًا عن الجداول والسجلات التي تم تعديلها على الأرجح بواسطة الإضافة.
قبل كل شيء ، لا تخف على غوغل مشكلتك. جرِّب البحث عن عبارات محددة ذات صلة بمشكلتك ، مثل اسم نظام إدارة المحتوى في تطبيقك ، بالإضافة إلى
405 Method Not Allowed
. من المحتمل أن تجد شخصًا تعرض لنفس المشكلة.استكشاف الأخطاء وإصلاحها على جانب الخادم
إذا كنت لا تشغل تطبيق CMS - أو حتى إذا كنت كذلك ، ولكنك واثق من أن
405 Method Not Allowed
بها لا ترتبط بذلك - فإليك بعض النصائح الإضافية لمساعدتك على تحرّي الخلل الذي قد يسبب المشكلة على جانب الخادم من الأشياء.تأكيد تكوين الخادم الخاص بك
من المرجح أن يتم تشغيل التطبيق الخاص بك على خادم يستخدم أحد برنامجي خادم الويب الأكثر شعبية ،
Apache
أوnginx
. في وقت النشر ، يشكل كل من خوادم الويب هذه 84٪ من برامج خادم الويب في العالم ! وبالتالي ، تتمثل إحدى الخطوات الأولى التي يمكنك اتخاذها لتحديد ما قد يكون السبب في ظهور رموز الاستجابة 405 Method Not Allowed
بها" في فحص ملفات التكوين الخاصة ببرنامج خادم الويب لديك للحصول على إرشادات غير مقصودة لإعادة التوجيه أو طلب معالجة.
لتحديد خادم الويب الذي يستخدمه تطبيقك ، ستحتاج إلى البحث عن ملف مفتاح. إذا كان خادم الويب الخاص بك هو Apache ، فابحث عن ملف
.htaccess
داخل الدليل الجذر لنظام ملفات موقع الويب الخاص بك. على سبيل المثال ، إذا كان التطبيق الخاص بك على مضيف مشترك ، فمن المحتمل أن يكون لديك اسم مستخدم مرتبط بحساب الاستضافة. في مثل هذه الحالة ، يتم العثور على الدليل الجذر للتطبيق عادة في مسار/home/<username>/public_html/
، لذا سيكون ملف .htaccess
على/home/<username>/public_html/.htaccess
.
إذا قمت
.htaccess
ملف .htaccess
، RewriteXXX
في محرر نصوص وابحث عن السطور التي تستخدم توجيهات RewriteXXX
، والتي تعد جزءًا من الوحدة mod_rewrite
في Apache. تغطية الطريقة التي تعمل بها هذه القواعد بالضبط خارج نطاق هذه المقالة ، ومع ذلك ، فإن المفهوم الأساسي هو أن توجيه RewriteCond
يحدد نمطًا يستند إلى النص سيتم مطابقته مع عناوين URL المدخلة. إذا طلب زائر إلى عنوان URL مطابق ،RewriteRule
توجيه RewriteRule
الذي يتبع واحد أو أكثر من توجيهات RewriteCond
لتنفيذ إعادة التوجيه الفعلي للطلب إلى عنوان URL المناسب.
على سبيل المثال ، إليك
RewriteRule
بسيط يتطابق مع جميع طلبات GET
الواردة إلىhttps://airbrake.io/users/create
ويستجيب باستخدام رمز الخطأ 405 Method Not Allowed
:
لاحظ العلم
R=405
في نهاية RewriteRule
، والذي ينص صراحة على أن رمز الاستجابة يجب أن يكون 405
، مشيرا إلى وكلاء المستخدم أن المورد موجود ، ولكن غير مسموح بطريقة HTTP المقدمة. وبالتالي ، إذا وجدت أي توجيهات غريبة أو RewriteRule
RewriteCond
في ملف .htaccess
لا يبدو أنها تنتمي ، فحاول التعليق عليها مؤقتًا (باستخدام بادئة الأحرف #
) وإعادة تشغيل خادم الويب لمعرفة ما إذا كان هذا يحل المشكلة.
من ناحية أخرى ، إذا كان
nginx
يعمل على nginx
، فستحتاج إلى البحث عن ملف تهيئة مختلف تمامًا. بشكل افتراضي ، يدعى هذا الملف بـ nginx.conf
ويقع في أحد الدلائل الشائعة القليلة: /usr/local/nginx/conf
، /etc/nginx
، أو /usr/local/etc/nginx
. بمجرد تحديد موقع ، افتح nginx.conf
في محرر نص وابحث عن التوجيهات التي تستخدم علامة رمز الاستجابة 405
. على سبيل المثال ، هنا هو block directive
بسيط (أي مجموعة من التوجيهات المسماة) يقوم بتكوين خادم ظاهري لـ airbrake.io
ويضمن أن طلب POST
على https://airbrake.io/users/create
يفشل ويتم الرد عليه رمز الاستجابة 405
:
إلقاء نظرة على ملف
nginx.conf
الخاص بك لأي توجيهات أو خطوط غير طبيعية تتضمن علامة 405
. قم بالتعليق على أي تشوهات قبل إعادة تشغيل الخادم لمعرفة ما إذا كان قد تم حل المشكلة.
يمكن أن تختلف خيارات التهيئة لكل نوع مختلف لخادم الويب بشكل كبير ، لذلك سنقوم فقط بإدراج بعض الخيارات الشائعة لمنحك بعض الموارد للبحث خلالها ، اعتمادًا على نوع الخادم الذي يتم تشغيل التطبيق عليه:
انظر من خلال السجلات
سيحتفظ كل تطبيق ويب تقريبًا بنوع من سجلات الخادم. عادةً ما تكون
Application logs
هي تاريخ ما قام به التطبيق ، مثل الصفحات التي تم طلبها ، والخوادم التي تتصل بها ، وما هي نتائج قاعدة البيانات التي توفرها ، وما إلى ذلك. ترتبط Server logs
بالأجهزة الفعلية التي تقوم بتشغيل التطبيق ، وغالبًا ما توفر تفاصيل حول صحة وحالة جميع الخدمات المتصلة ، أو حتى الخادم نفسه فقط. "تسجل Google [PLATFORM_NAME]" إذا كنت تستخدم نظام إدارة المحتوى أو "سجلات [PROGRAMMING_LANGUAGE]" و "سجلات [OPERATING_SYSTEM]" إذا كنت تشغل تطبيقًا مخصصًا ، للحصول على مزيد من المعلومات حول البحث عن السجلات المعنية.تصحيح التعليمات البرمجية التطبيق الخاص بك أو البرامج النصية
إذا فشل كل شيء آخر ، فقد يكون هناك مشكلة في بعض التعليمات البرمجية المخصصة داخل تطبيقك تتسبب في حدوث المشكلة. حاول تشخيص المواضع التي قد تأتي منها المشكلة من خلال تصحيح أخطاء تطبيقك يدويًا ، إلى جانب تحليل بيانات التطبيق وسجلات الخادم. من الناحية المثالية ، قم بعمل نسخة من التطبيق بالكامل إلى جهاز تطوير محلي وقم بإجراء عملية التصحيح خطوة بخطوة ، مما يسمح لك بإعادة إنشاء السيناريو المحدد الذي حدث فيه
405 Method Not Allowed
وعرض التعليمات البرمجية للتطبيق في الوقت الحالي شيء ما خطأ.
بغض النظر عن السبب - وحتى إذا تمكنت من إصلاحه هذه المرة - فإن ظهور مشكلة مثل
405 Method Not Allowed
داخل التطبيق الخاص بك هو مؤشر جيد قد ترغب في تطبيق أداة إدارة الأخطاء ، والذي سوف يساعدك تلقائيًا كشف الأخطاء وسوف ينبهك في اللحظة نفسها التي تحدث فيها.
تحقق من برنامج مراقبة الأخطاء