読者です 読者をやめる 読者になる 読者になる

雑記 - otherwise

最近はDQ10しかやっていないダメ技術者がちまちまと綴る雑記帳

リクエストされたリソースが存在しない場合の処理

雑記

MSMVP for C# であり、わんくま同盟の主催者でもある中博俊さんによる、「 HTTP 404 エラーに対応した ASP.NET のリダイレクタ作成」と云う記事が CodeZine に掲載されています。
少し気になったので、試しに記事通りにやってみたところ、 HTTP の仕組みから考えて如何なものかと思われるところがありました。

そもそも、この方法を利用すると、クライアントには「 HTTP Status 302 (Found) 」が返却されます。(記事中は、その事に言及されていませんが)
つまり、クライアントの UserAgent にとって、リクエストしたページは「見つかった」事になるのです。これは正しいレスポンスでしょうか。

※この辺は、小飼弾さんの blog を参照されると良いかと思います。

確かに、「見る側」にとって、サーバの返す殺風景な「 Not Found 」ページや、ブラウザの 404 簡易表示はほとんど利益をもたらしません。

そういう意味で、意味のあるページ(インデックスなど)を見せる事自体には反対しません。
しかし、その前にまず、正確に『「存在しない」事を相手に示す』必要がある事を忘れないで欲しいと思います。

ちなみに、これは別に中さんの記事に対するクレームと云う訳ではなくて、 IIS のカスタムエラーの仕様に対する苦言です。
現状、(少なくとも手元で試した Windows XP + IIS 5.1 環境では) IIS のカスタムエラーの仕様がクライアントへリダイレクト要求を行う形で実装されている為、コンテンツ作成側では対処のしようがないのです。

では、どうしたらいいのか。
この答えについては、中さんには申し訳ないですが「この記事の方法を使用しない」事しかないのではないかと思います。
(とりあえずの代替案として、 IIS 側に静的ファイルを用意すると云うのはありますが。。。)