Response.StatusCode وInternet Explorer - هل تريد عرض رسالة مخصصة؟

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

سؤال

أقوم بتنفيذ HttpRequestValidationException في معالج Application_Error الخاص بي، وإذا أمكن، أريد عرض رسالة مخصصة.

الآن، أفكر في رمز الحالة.في المثال الحالي الخاص بي، يرسل 200، وهو ما أعتقد أنه لا ينبغي القيام به.أرغب في إرسال (IMHO) 400 طلب سيئ أكثر ملاءمة بدلاً من ذلك.ومع ذلك، في الوقت نفسه، أرغب في استخدام Response.Write لإدخال رسالة مخصصة.يعرضها Firefox بشكل صحيح، لكن IE7 يعطيني صفحة خطأ Internet Explorer الافتراضية غير المفيدة.

من ناحية، أعتقد أن Internet Explorer يفترض أن كل شيء <> 200 لا يحتوي ببساطة على أي محتوى "جيد"، وأن RFC ليس واضحًا حقًا هنا.

لذلك أتساءل فقط، هل يتم إرسال HTTP 200 لصفحة خطأ بسبب ممارسة HttpRequestValidationException الجيدة أم لا؟هل هناك بدائل جيدة؟

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

المحلول

لا يشير رمز الاستجابة HTTP 200 إلى وجود خطأ.يشير إلى أن كل شيء كان على ما يرام.يجب ألا تستخدم رمز الاستجابة 200 لخطأ ما.

يعرض Internet Explorer صفحة "الأخطاء المألوفة" الخاصة به إذا كانت الاستجابة أقل من 512 بايت.إليك المزيد حول هذه المسألة: http://weblogs.asp.net/scottgu/archive/2006/04/09/442332.aspx,

نصائح أخرى

لا، إنها بالتأكيد ليست ممارسة جيدة.تعني رموز الحالة 2XX (من بين أشياء أخرى) أن الطلب صالح.وهو ما يتعارض تمامًا مع رفع HttpRequestValidationException.

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

يعرض Internet Explorer ما يسمونه "رسالة خطأ HTTP سهلة الاستخدام" عندما تكون الاستجابة 4xx أو 5xx.يمكن للمستخدم إيقاف تشغيل هذا الخيار في مربع الحوار Tools.Options.Advanced[Browsing] الخاص بـ IE.

يعد إرسال 200 لصفحة خطأ ممارسة سيئة بشكل عام.أحد البدائل هو أن يكون لديك صفحة "خطأ" صالحة مفترض لإظهار رسائل الخطأ (لذلك سيكون 200 أمرًا جيدًا) ثم استخدم إعادة التوجيه 3xx إلى تلك الصفحة.

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