Mamy witrynę ASP.Net MVC3 dostępną tylko przez HTTPS, za pomocą atrybutu RequireHTTPS na kontrolerze.Prawidłowa odpowiedź na żądanie HTTP HEAD na stronie tylko HTTPS
Otrzymujemy wiele żądań HTTP HEAD, głównie z botów na Twitterze. Domyślna odpowiedź ASP.Net/MVC3 to "Błąd wewnętrznego serwera wewnętrznego 500" i są przechwytywane/rejestrowane przez elmah i log4net (teraz odfiltrowane!).
Potrafię napisać konkretnego kontrolera i trasę do obsługi żądań innych niż HTTPS zgodnie z tym pytaniem - Responding to HEAD Request in asp.NET MVC 3.
Ale, z punktu widzenia boty, jaka byłaby najlepsza odpowiedź? 200, aby pokazać serwer jest żywy, przekierowanie 302 do URL-a HTTPS, czy pozostać przy 500, ponieważ strona nie jest dostępna przez HTTP?
500 nie wydaje się w porządku ... nie jest istnieje tam kod statusu? 500 sugeruje, że gdzieś jest błąd. –
Proponuję nie zgłaszać błędu 500. Jeśli witryna jest dostępna tylko za pośrednictwem protokołu HTTPS. Chciałbym użyć przekierowania 301 (stałe) zamiast 302 (tymczasowe). Można również użyć reguły przepisywania, aby przekierować cały ruch spoza https do https rozwiązującego problem. –
Zgadzam się, że nie wyrzucamy błędu 500, ale jest to domyślne zachowanie MVC3: 'System.InvalidOperationException: Żądany zasób jest dostępny tylko przez SSL. na System.Web.Mvc.RequireHttpsAttribute.HandleNonHttpsRequest (AuthorizationContext filterContext) w System.Web.Mvc.RequireHttpsAttribute.OnAuthorization (AuthorizationContext filterContext) w System.Web.Mvc.ControllerActionInvoker.InvokeAuthorizationFilters (ControllerContext controllerContext, filtry IList'1, ActionDescriptor actionDescriptor) – Chris