この記事を見て、そういえば ASP.NET でカスタム HTTP ヘッダを追加する方法を知らないなと思ったので、Web.config だけで解決できないか調べてみました。
結論から書くと、Web.config だけでカスタム HTTP ヘッダを追加することが出来ます。ただし IIS 7.0 以降のみ対応になります。
<system.webServer> <httpProtocol> <customHeaders> <add name="X-Content-Type-Options" value="nosniff"/> </customHeaders> </httpProtocol> </system.webServer>
IIS 7.0 から追加された system.webServer 要素にはいろんな設定項目がありますね。そしてカスタム HTTP ヘッダを追加するための設定項目もあったので、上記の例のように書くと全てのリクエストで X-Content-Type-Options: nosniff ヘッダを出力することが出来ます。
実際に HTTP リクエストをキャプチャしてみました。リクエスト先は ASP.NET MVC で作ったアプリケーションです。
ちゃんと指定したヘッダが出力されていますね。ASP.NET MVC などを使っていると、アクションフィルタなどで解決したくなりますが、Web.config だけで対応できるのはお手軽ですね。
追記
X-Content-Type-Options ヘッダ以外にも X- から始まるヘッダはあるので、それらも追加してみました。
<system.webServer> <httpProtocol> <customHeaders> <add name="X-Content-Type-Options" value="nosniff" /> <add name="X-Frame-Options" value="DENY" /> <add name="X-XSS-Protection" value="1" /> </customHeaders> </httpProtocol> </system.webServer>
それぞれのヘッダの説明は 1分でわかる「X-ナントカ」HTTPレスポンスヘッダ - 葉っぱ日記 を読めばいいと思います。
素の ASP.NET はこういったヘッダを自動で出力してくれたりはしないので、Web.config にテンプレ的に書いていてもいいかもしれないですね。