لماذا أباتشي + القضبان هو بصق اثنين من وضع رؤوس رمز 500?

StackOverflow https://stackoverflow.com/questions/161631

سؤال

لدي القضبان التطبيق الذي يسير على ما يرام باستثناء شيء واحد.

عندما طلب شيء لا وجود له (أي/not_a_controller_or_file.txt) و القضبان يلقي "أي الطريق المباريات..." استثناء الرد هذا (سطر فارغ المتعمد):

HTTP/1.1 200 OK
Date: Thu, 02 Oct 2008 10:28:02 GMT
Content-Type: text/html
Content-Length: 122
Vary: Accept-Encoding
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive

Status: 500 Internal Server Error
Content-Type: text/html

<html><body><h1>500 Internal Server Error</h1></body></html>

لدي ExceptionLogger المساعد في /المورد ، على الرغم من أنه لا يبدو أن هذه المشكلة.لم تقم بإضافة أي معالجة الخطأ خارج مخصص 500.html في العام (على الرغم من أن الاستجابة لا تحتوي على HTML) وليس لدي أي فكرة من أين هذا قليلا من html قادم من.

حتى شيء ما في مكان ما ، مضيفا أن HTTP/1.1 200 رمز الحالة في وقت مبكر جدا ، أو حالة:500 في وقت متأخر جدا.وأظن انها أباتشي لأنني المناسبة HTTP/1.1 500 رأس (في الأعلى) عند استخدام Webrick.

الإنتاج بلدي كومة على النحو التالي:أباتشي 2 الهجين (5 حالات) RubyOnRails 2.1.1 (يحدث في كل من 1.2 و 2.1.1)


لقد نسيت أن أذكر ، الخطأ سببه "أي الطريق المباريات..." استثناء

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

المحلول

هذا هو إلى حد ما في الموضوع القديم لكن ما يستحق وجدت مجموعة كبيرة من الموارد التي تتضمن وصفا مفصلا المشكلة و الحل.يبدو أن هذا الخلل يؤثر على القضبان < 2.3 عند استخدامها مع الهجين.

نصائح أخرى

هذا ملف html قادم من القضبان.لكنها تواجه بعض نوع من الخطأ (ربما استثناء من نوع ما ، أو خطأ غير قابل للاسترداد).

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

وضع رأس هو كيف القضبان, PHP, أو أيا كان يحكي أباتشي "كان هناك خطأ يرجى إعادة هذا الكود بدلا من 200 موافق". حقيقة هناك سطر فارغ يعني شيء إضافي يجري وروبي هو إخراج سطر فارغ قبل الخطأ الناتج لأي سبب من الأسباب.ربما الناتج السابق من البرنامج النصي الخاص بك.منذ فترة طويلة وقصيرة من ذلك هو على الرغم إضافية سطر فارغ يعني أباتشي يعتقد "أوه ، سطر فارغ لا إضافية رؤوس كل هذا المحتوى الآن." ، التي من شأنها أن تكون متسقة مع رأس طول محتوى قدمت لك.

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

تحرير: إعطاء المزيد من المعلومات المقدمة من قبل ديف عن الداخلية ، أود أن أقول هذا هو في الواقع مشكلة مع تفويض ما يدور وراء الكواليس...لم أستطع أن أقول لك بالضبط ماذا الرغم من وراء ما سبق أن قيل.

هذا هو قادم من القضبان نفسها.

http://github.com/rails/rails/tree/master/actionpack/lib/action_controller/dispatcher.rb#L60

المرسل هو العودة إلى صفحة خطأ مع رمز الحالة 200 (نجاح).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top