سؤال

لذلك، إذا نظرت إلى قائمة رموز حالة HTTP, ربما يكون هناك عدد منهم مفيدين أثناء البرمجة. قد يتعامل الخادم مع بعض الأشياء، مثل البروتوكولات، ولكن يمكن أن تكون الكثير من هذه الرموز مفيدة في إخبار المتصفح بالوضع الفعلي للصفحة.

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

إذا كنت فضوليا، فهذا في نطاق برمجة PHP، ولكن من المحتمل أن ينطبق على اللغات الأخرى أيضا.

هل كانت مفيدة؟

المحلول

العديد من هذه مفيدة بشكل جوهري مع استخدام API على غرار الراحة. علي سبيل المثال:

  • 200 (موافق): لقد طلبت مورد. ها هو!

  • 201 (تم إنشاؤه): طلبت مني تقديم مورد جديد. فعلت! إليك أين يمكنك أن تذهب إلى أسألني عن ذلك في المرة القادمة.

  • 202 (مقبول): طلبت مني أن أفعل شيئا، لكنها ستستغرق بعض الوقت، لذلك لا تنتظر. إليك أين يمكنك أن تذهب للتحقق من الحالة.

  • 300 (خيارات متعددة): لقد طلبت شيئا، لكنك لم تكن محددة بما فيه الكفاية. أي واحد من هؤلاء تقصد؟

  • 301 منقول بشكل دائم): لقد طلبت شيئا، لكنها في مكان آخر الآن. إليك أين ذهبت.

  • 302 (وجدت): لقد طلبت شيئا ما، لكنها مكان آخر في الوقت الراهن. ها هو.

  • 304 (غير تعديل): لقد طلبت شيئا ما قبل ذلك، لكنه لم يتغير منذ آخر مرة سألت فيها.

  • 400 طلب سىء): هناك خطأ ما في ما طلبت مني القيام به. إصلاح ما قلته وحاول مرة أخرى.

  • 401 (غير مصرح به): أحتاج منك تحديد نفسك قبل أن أتمكن من إنهاء هذا الطلب. [ملاحظة: هذا هو واحد من رؤوس المسمى لسوء الحظ. يجب أن يكون حقا بعنوان غير مصادق; ؛ 403 هو أشبه غير مصرح.]

  • 403 ممنوع): لقد طلبت شيئا لا يسمح لك به.

  • 404 غير موجود): لقد طلبت مورد، ولكن لا يوجد واحد يطابق وصفك.

  • 500 (خطأ في الخادم): حدث خطأ ما، لذلك لا أستطيع أن أعطيك ما طلبته الآن. اسف بشأن ذلك.

  • 501 (غير مطبق): أنا لا أؤيد هذا النوع من الطلب الآن.

  • 503 الخدمة غير متوفرة): أنا غير قادر على الاستجابة للطلبات الآن.

نصائح أخرى

لتكون أكثر دقة، هذه مجرد رموز حالة HTTP، وليس رؤوس HTTP. ينقل الرؤوس الكثير من الأشياء ويتم إرسالها من قبل كل من العميل والخادم، ولا يتجاوز نطاق هذه الإجابة.

واحد من رؤوس HTTP، أي أول واحد أرسل بواسطة الخادم إلى العميل، يبدو وكأنه هذا:

HTTP/1.x 200 OK

أو:

HTTP/1.x 404 Not Found

الرقم الذي يظهر بعد معرف البروتوكول HTTP/1.x هو ما يسمى برمز الحالة مع رسالة الحالة المقابلة المرسلة بعد ذلك. فيما يلي رموز الحالة التي كان علي استخدامها في أيام برمجة PHP الخاصة بي:

  • 200 OK هو إلى حد بعيد الأكثر شيوعا. هذا يعني أن كل شيء يعمل بشكل جيد وأنك تستجيب بالمحتوى.
  • 404 Not Found يتم إرساله تلقائيا بواسطة الخادم في ظل ظروف معينة، على وجه الخصوص عندما يؤدي الطلب إلى برنامج تنفيذ تنفيذي لا يمكن العثور عليه على الخادم. في بعض الأحيان، خاصة إذا كنت تكتب أطرا تتعامل مع URIS بطريقة خاصة، فستحتاج إلى تعيين رمز الحالة 404 يدويا. على سبيل المثال، إذا كان لديك نص تنفيذ مركز واحد index.php خلال أثناء توجيه جميع الطلبات باستخدام .htaccess أو إعدادات Apache الخاصة بك، لن يعيد Apache أبدا 404 من تلقاء نفسه لأنه، بعد كل شيء، وجد index.php. وبعد ولكن من الواضح أنه ما زال هناك بعض URIS الذي تريد التواصل لا يؤدي إلى أي مكان، والتي سترغب في إرسال رأس الحالة 404 الخاص بك.
  • 301 Moved Permanently و 302 Found (يشار إليها عادة باسم "نقل مؤقتا"). هذان يرشدان المتصفح للبحث عن Location رأس وإعادة توجيه المستخدم إلى عنوان URL المحدد هناك. تحتوي معظم أطر PHP على وظائفها الخاصة ل Retirects HTTP، والتي تتعامل أيضا مع الرؤوس. إعادة توجيه PHP الأصلي header('Location: http://www.google.com'); يغير حالة HTTP تلقائيا إلى 302. لم أفهم أبدا في العمق الفرق بين 302 و 301، لكنني قرأت أن 301 أفضل بكثير لتحسين محرك البحث، لذلك أحاول استخدام دائما 301. ربما يستطيع شخص آخر تنوير على ما الفرق بالضبط هو. شيء واحد يجب توخي الحذر منه هو تجنب وضع رأس الحالة والموقع 301/302 على صفحة تهدف إلى تلقي بيانات النشر. لقد واجهت مشكلة معها في الماضي.
  • 304 Not Modified عادة ما يتم إرسالها تلقائيا اعتمادا على إعدادات Apache الخاصة بك. تشمل معظم المتصفحات في ظل الظروف العادية التاريخ / الوقت الذي تم تخزين العنصر المطلوب مؤقتا على كمبيوتر المستخدم. يتم استخدام Etags وغيرها من الرؤوس لهذا الغرض. إذا لم يتغير Apache القضاة أن الملف المقابل للخادم لم يتغير منذ ذلك الوقت، فغالبا ما يرسل Apache 304 بدون أي محتوى، مما يخبر العميل فقط باستخدام الإصدار المخزن مؤقتا.
  • 401 Unauthorized يتم إرساله عندما يحاول المستخدم الوصول إلى قسم مقيد على الموقع الإلكتروني. هناك بعض ميزات HTML القديمة وتقنيات الخادم التي تدعم مطالبات اسم المستخدم / كلمة المرور الأصلية، والتي أرسلت 401 رموز الحالة عند إلغاء المطالبات أو غير مصرح بها. يكتب معظم الأشخاص هذه الأيام تطبيقات PHP الخاصة بهم لمصادقة المستخدم وإدارة الحقوق، لذلك لا يرسل Apache في كثير من الأحيان 401s من تلقاء نفسه. يمكنك إرسال الحالة يدويا للإشارة إلى أن هناك حاجة إلى المزيد من الحقوق للوصول إلى الصفحة.
  • 400 Bad Request يتم إرسالها بواسطة Apache إذا تلقت طلبا لا يمكن فهمه. عادة لا داعي للقلق بشأن إرسالها يدويا.
  • 403 Forbidden يستخدم بعض الأشخاص عندما يحاول المستخدمون الوصول إلى المنطقة التي لن تكون قادرة على الوصول إليها، حتى مع المصادقة المناسبة ربما بسبب القيود الجغرافية أو الملكية الفكرية أو حظر القيود. أنا لا أستخدمه بنفسي، وأنا فقط استخدم 401 و 404 لملء.
  • 5xx. وبعد 500 السلسلة هي الرموز التي لا ترى حقا كمطور. هذا يعني رمز أو خادمك فعل شيء سيء. إذا كان لديك خادم أو نظام موازنة التحميل من العيار الكافي ولن يكون لديك أخطاء في التعليمات البرمجية الخاصة بك، فلن ترى أبدا 500 سلسلة.

حسنا، تلك هي رموز الحالة، وليس الرؤوس، ولكن قد يكون أي منهم مفيدا (على الرغم من أن سلسلة 5xx من غير المرجح أن تكون).

أخذه تتحدث عن استخدام رؤوس إما تخدم الملفات أو توفير Webservice مريح؟

ستكون بعد رموز الحالة، بدلا من رؤوسها بعد ذلك. تلك التي استخدمتها عادة هي:

200 OK
301 Moved Permanently
302 Found (temporary redirect)
400 Bad Request
403 Forbidden
404 Not found
500 Internal Server Error

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

ثم هناك:

418 I'm a teapot

بسرعة الذهاب من خلال تلك القائمة (من رموز الحالة), ، إليك تلك التي غالبا ما أستخدمها (أقوم بتطوير الويب PHP كعملي) :

  • 200 OK : تقريبا دائما أرسلت بواسطة اباتشي
  • 301 Moved Permanently : عموما أرسلت مني (أو بواسطة Apache، عند استخدام قواعد إعادة كتابة)
  • 302 Found : عموما أرسلت مني (أو بواسطة Apache، عند استخدام قواعد إعادة كتابة)
  • 304 Not Modified : أرسل عموما بواسطة Apache (أو وكيل عكسي أمامه)
  • 401 Unauthorized : عموما أرسلت بواسطة اباتشي
  • 403 Forbidden : عموما أرسلت بواسطة اباتشي
  • 404 Not Found : أرسل كل من أباتشي وأنا - اعتمادا على المواقف
  • 410 Gone : عموما أرسلت مني
  • 500 Internal Server Error : أرسل كل من أباتشي وأنا؛ هذا هو الشخص الذي أستخدمه عموما عندما يكون هناك خطأ "تقني" - حتى لو كان لا ينبغي أن يحدث أبدا ^^

وهنا أولئك الذين يمكنني استخدامهم (خاصة إذا كانت الراحة) :

تلك التي استخدمتها معظمها هي:

  • 301 - انتقلت بشكل دائم - استخدم هذا إذا تم نقل المورد نهائيا إلى عنوان URL الجديد.
  • 302 - انتقل مؤقتا - استخدم هذا لإعادة التوجيه عندما لا تتمكن من إعادة توجيه دائم.
  • 404 غير موجود. يجب تكوين الخادم الخاص بك لخدمة هذا من أجل عناوين URL غير صالح. يجب أن تراقب هذه في سجلاتك - الكثير من 404s هو علامة على دفع سيء.
  • 500 - خطأ خادم داخلي. يجب تكوين الخادم الخاص بك لإرسالها بشكل صحيح عندما تكون هناك أخطاء. يجب أن تراقب أخطاء 5xx في سجلاتك.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top