हमारे पास नियंत्रक पर RequHTTPS विशेषता का उपयोग करके एक एएसपी.Net MVC3 साइट केवल HTTPS पर पहुंच योग्य है।HTTPS पर HTTP HEAD अनुरोध के लिए सही प्रतिक्रिया केवल
हमें कई HTTP HEAD विधि अनुरोध प्राप्त हो रहे हैं, मुख्य रूप से ट्विटर बॉट्स के रूप में दिखाई देने वाले। डिफ़ॉल्ट ASP.Net/MVC3 प्रतिक्रिया एक '500 आंतरिक सर्वर त्रुटि' है, और elmah और log4net द्वारा पकड़ा/लॉग किया जा रहा है (अब फ़िल्टर किया गया है!)।
मैं इस प्रश्न के अनुसार इन गैर-HTTPS अनुरोधों को संभालने के लिए एक विशिष्ट नियंत्रक और मार्ग लिख सकता हूं - Responding to HEAD Request in asp.NET MVC 3।
लेकिन, बॉट्स परिप्रेक्ष्य से सबसे अच्छी प्रतिक्रिया क्या होगी? सर्वर को दिखाने के लिए 200 जीवित है, 302 एचटीटीपीएस यूआरएल पर रीडायरेक्ट है, या 500 के साथ चिपक गया है क्योंकि साइट HTTP पर उपलब्ध नहीं है?
500 सही नहीं लगता है ... नहीं है इसके लिए एक स्टेटस कोड है? 500 सुझाव देता है कि वास्तव में कहीं एक त्रुटि है। –
मेरा सुझाव है कि 500 त्रुटि फेंक न दें। यदि साइट केवल HTTPS के माध्यम से पहुंच योग्य है। मैं 302 (अस्थायी) के बजाय 301 रीडायरेक्ट (स्थायी) का उपयोग करूंगा। आप समस्या को सुलझाने के लिए सभी गैर-https ट्रैफ़िक को पुनर्निर्देशित करने के लिए पुनर्लेखन नियम का भी उपयोग कर सकते हैं। –
500 त्रुटि फेंकने के बारे में सहमत नहीं है, लेकिन यह एमवीसी 3 का डिफ़ॉल्ट व्यवहार है: 'System.InvalidOperationException: अनुरोधित संसाधन केवल एसएसएल के माध्यम से पहुंचा जा सकता है। System.Web.Mvc.RequireHttpsAttribute.HandleNonHttpsRequest (AuthorizationContext filterContext) System.Web.Mvc.RequireHttpsAttribute.OnAuthorization (AuthorizationContext filterContext) पर System.Web.Mvc.ControllerActionInvoker.InvokeAuthorizationFilters पर (ControllerContext controllerContext, IList'1 फिल्टर पर, एक्शन डिस्क्रिप्टर एक्शन डिस्क्रिप्टर) – Chris