Scott Mitchell, gereksiz başlıkları kaldırmak için bir blog gönderisinde çözümler sunar .
Burada daha önce başka yanıtlarda da belirtildiği gibi, Serverbaşlık için http modülü çözümü veya IIS 10+ için bir web.config çözümü vardır ya da boş bırakmak için URLRewrite'ı kullanabilirsiniz .
Güncel (IIS 10 +) bir kurulum için en pratik çözüm removeServerHeaderweb.config'de kullanmaktır:
<system.webServer>
...
<security>
<requestFiltering removeServerHeader="true" />
</security>
...
</system.webServer>
İçin X-AspNet-Versionve X-AspNetMvc-Versiondeğil sadece tüm bunları üreten: o her yanıta bunları kaldırmayı daha iyi bir yol sağlar.
Web.config içinde enableVersionHeaderdevre dışı bırakmak için kullanınX-AspNet-Version
<system.web>
...
<httpRuntime enableVersionHeader="false" />
...
</system.web>
MvcHandler.DisableMvcResponseHeaderDevre dışı bırakmak için .Net Application_Start olayında kullanınX-AspNetMvc-Version
MvcHandler.DisableMvcResponseHeader = true;
Ve son olarak, IIS yapılandırmasında X-Powered-Byweb.config dosyasındaki özel başlığı kaldırın .
<system.webServer>
...
<httpProtocol>
<customHeaders>
<remove name="X-Powered-By" />
</customHeaders>
</httpProtocol>
...
</system.webServer>
Dikkat edin, ARR'niz (Uygulama İsteği Yönlendirme) varsa, kendi başına da ekleyecektir ve X-Powered-Bybu, özel başlık ayarlarıyla kaldırılmayacaktır. Bu seferki (bir tesiste) IIS kökü üzerinde IIS Yöneticisi, Editör yapılandırma yoluyla kaldırılmalıdır: gidin system.webServer/proxydüğüme ve seti arrResponseHeaderiçin false. A sonra IISResetdikkate alınır.
(Ben bunu bulduk burada eski şeyleri yapılandırma 6.0 yolunu IIS ile ilgili bu yazı olduğunu hariç.)
Statik içerikte oluşturulan başlığa varsayılan olarak uygulama koduna göre çözümün geçerli olmadığını unutmayın (bunu runAllManagedModulesForAllRequestsdeğiştirmek için etkinleştirebilirsiniz , ancak tüm isteklerin .Net ardışık düzenini çalıştırmasına neden olur). X-AspNetMvc-VersionStatik içeriğe eklenmediği için bir sorun değildir (en azından statik istek .Net ardışık düzeninde çalıştırılmıyorsa).
Yan not: amaç kullanılan teknolojiyi gizlemek olduğunda, standart .Net çerez adlarını da değiştirmelisiniz ( .ASPXAUTHformlar yetkilendirildiyse ( web.config içindeki etiketin nameözniteliğini kullanın forms), ASP.NET_SessionId( etiket <sessionState cookieName="yourName" />altında web.config içinde kullanın system.web), __RequestVerificationToken( kod ile AntiForgeryConfig.CookieName, ancak maalesef bu sistemin html'de oluşturduğu gizli girdi için geçerli değildir)).