1

Application_Error ハンドラーに HttpRequestValidationException を実装しています。可能であれば、カスタム メッセージを表示したいと考えています。

今、私は StatusCode について考えています。私の現在の例では、200 を送信しますが、これは行うべきではないと思います。代わりに、(IMHO) より適切な 400 Bad Request を送信したいと思います。ただし、同時に、Response.Write を使用してカスタム メッセージを入力したいと考えています。Firefox では正しく表示されますが、IE7 ではデフォルトの役に立たない Internet Explorer エラー ページが表示されます。

一方では、Internet Explorer は <> 200 のすべてが単に「良い」コンテンツを持っていないと仮定しているだけだと思います。RFC はここではあまり明確ではありません。

だから私は、HttpRequestValidationExceptionの良い習慣によって引き起こされたエラーページに対してHTTP 200を送信しているのかどうか疑問に思っていますか? 良い代替手段はありますか?

4

3 に答える 3

4

HTTP200応答コードはエラーを示しません。すべてがOKであったことを示しています。エラーに対して200応答コードを使用しないでください。

応答が512バイト未満の場合、InternetExplorerは「フレンドリエラー」ページを表示します。この問題の詳細は次のとおりです:http ://weblogs.asp.net/scottgu/archive/2006/04/09/442332.aspx 、

于 2008-09-08T22:05:02.570 に答える
1

いいえ、それは確かに良い習慣ではありません。2XXステータスコードは、(とりわけ)リクエストが有効であることを意味します。これは、HttpRequestValidationExceptionを発生させるのとは正反対です。

悲しいことに、IEを正しく動作させる方法がわかりません。200を送信するよりも少し良い方法は、エラーページにリダイレクトすることですが、それでも完璧にはほど遠いです。

于 2008-09-08T21:49:22.873 に答える
1

Internet Explorerは、応答が4xxまたは5xxの場合、「わかりやすいHTTPエラーメッセージ」と呼ばれるものを表示します。このオプションは、IEのTools.Options.Advanced[Browsing]ダイアログでユーザーがオフにすることができます。

エラーページに200を送信することは、一般的に悪い習慣です。1つの代替方法は、エラーメッセージを表示することになっている有効な「エラー」ページを用意し(したがって、200で問題ありません)、そのページへの3xxリダイレクトを使用することです。

于 2008-09-08T21:59:49.930 に答える