我々はRequireHTTPSは、コントローラ上の属性を使用することにより、ASP.Net MVC3サイトにHTTPS経由でのみアクセスを持っています。正しい応答
私たちは、主にTwitterのボットのように見える何から、数多くのHTTP HEADメソッドのリクエストを受けています。デフォルトのASP.Net/MVC3レスポンスは '500 Internal Server Error'で、elmahとlog4net(現在は除外されています)によってキャッチされ、ログされています。
が、私はこの質問のとおり、これらの非HTTPS要求を処理するために特定のコントローラとルートを書くことができ - Responding to HEAD Request in asp.NET MVC 3。
しかし、ボットの観点から何が最良の応答でしょうか? 200はサーバーが生きていること、HTTPS URLへの302リダイレクト、またはHTTP経由でサイトにアクセスできない500を使用していることを示します。
500を右いないようですが...ではありませんそこにステータスコードがありますか? 500は実際にどこかでエラーがあることを示しています。 –
私は500エラーを投げないことをお勧めします。サイトがHTTPS経由でのみアクセス可能な場合。 302(一時的)の代わりに301リダイレクト(永続的)を使用します。書き換えルールを使用して、https以外のすべてのトラフィックをhttpsにリダイレクトして、問題を解決することもできます。 –
500エラーを投げないことについて同意しますが、MVC3のデフォルトの動作です。 'System.InvalidOperationException:要求されたリソースにはSSL経由でしかアクセスできません。 System.Web.Mvc.ControllerActionInvoker.InvokeAuthorizationFilters(ControllerContext controllerContext、IList'1フィルタでSystem.Web.Mvc.RequireHttpsAttribute.OnAuthorizationでSystem.Web.Mvc.RequireHttpsAttribute.HandleNonHttpsRequest(AuthorizationContext filterContext) (AuthorizationContext filterContext) において、 ActionDescriptor actionDescriptor) – Chris