Supprimer L'en-tête de réponse du serveur IIS 8.0 / 8.5
Comment Pouvons-nous supprimer la réponse de l'en-tête du serveur dans IIS 8.0/8.5?
Mon serveur actuel rapport:
Microsoft-IIS/8.0
Microsoft-IIS/8.5
Pour IIS 7.0 j'ai utilisé L'URLScan 3.1 mais ceci n'est pris en charge que pour IIS 7.0 et pas 8.x
7 réponses
Vous pouvez utiliser UrlRewrite module créé par Microsoft. Le module de réécriture D'Url redirige votre url et peut également changer le nom de votre serveur IIS dans l'en-tête de réponse.
vous n'avez pas à utiliser la propriété redirect. Vous pouvez utiliser simplement changer la valeur de l'en-tête du serveur.
Voici les étapes:
tout d'abord, télécharger UrlRewrite module à partir de ce lien: http://www.iis.net/downloads/microsoft/url-rewrite et installer sur votre serveur IIS. Après cela, redémarrez IIS par cette commande sur cmd console
iisreset /restart
ajouter l'article suivant au fichier de configuration de votre site web sous le
<system.WebServer>
balise. Vous pouvez écrire n'importe quoi à l'élément de valeur comme nom de serveur.finalement nous avons changé le nom de la version IIS sur l'en-tête des données. Redémarrer IIS de nouveau. via la console cmd.
Bonus: Si vous voulez tester votre site web pour voir si il fonctionne ou pas... Vous pouvez utiliser le plugin "HttpRequester" mozilla firefox. pour ce plugin: https://addons.mozilla.org/En-us/firefox/addon/httprequester/
PS: je l'ai testé et ça a fonctionné pour moi sur le serveur IIS. Pas sur le a été créé temproray IIS server par le studio visuel.
malheureusement, la plupart des recommandations que vous trouverez en ligne pour supprimer l'en-tête "Server" dans IIS ne fonctionneront pas pour IIS 8.0 et 8.5. J'ai trouvé la seule option de travail, et à mon avis, aussi la meilleure, est d'utiliser un module de code natif IIS.
les modules de code natif diffèrent des modules managés les plus courants, car ils sont écrits en utilisant les API de win32 plutôt que ASP.NET. Cela signifie qu'ils fonctionnent pour toutes les requêtes (y compris les pages statiques et les images) plutôt que demande que le passé ASP.NET pipeline. En utilisant un module de code natif, il est possible de supprimer les en-têtes indésirables à la toute fin de la requête, ce qui signifie que vous pouvez supprimer les en-têtes (y compris l'en-tête "Server") quel que soit l'endroit où ils ont été définis.
les binaires et le code source d'un exemple de module de code natif pour supprimer les en-têtes dans IIS 7.0 à 8.5 sont disponibles dans l'article suivant.
http://www.dionach.com/blog/easily-remove-unwanted-http-headers-in-iis-70-to-85
il suffit d'utiliser l'étiquette claire dans le segment des en-têtes personnalisés dans le web.config:
<system.webServer>
<httpProtocol>
<customHeaders>
<clear />
<add name="X-Custom-Name1" value="MyCustomValue1" />
<add name="X-Custom-Name2" value="MyCustomValue2" />
</customHeaders>
</httpProtocol>
</system.webServer>
pour les en-têtes dynamiques, vous pouvez utiliser ce code dans Global.ascx:
protected void Application_PreSendRequestHeaders()
{
Response.Headers.Remove("Server");
Response.AddHeader("Sample1", "Value1");
}
c'est très simple. Il suffit de créer un module personnalisé:
public class HeaderStripModule : IHttpModule
{
public void Init(HttpApplication application)
{
application.PreSendRequestHeaders += (sender, args) => HttpContext.Current.Response.Headers.Remove("Server");
}
public void Dispose(){}
}
Et inscrivez-vous à web.config
ou applicationHost.config
si vous voulez une implémentation à l'échelle de la machine.
<system.webServer>
<modules>
<add name="HeaderStripModule" type="MyNamespace.HeaderStripModule" />
</modules>
</system.webServer>
URLScan a été abandonné à partir de IIS 7.5, car ses fonctionnalités sont supposées être disponibles via l'option "request filtering" (fonctionnalité ajoutée dans IIS 7.5).
mais L'option 'Remove server header' de URLScan ne semble pas avoir d'équivalent dans "request filtering".
comme dit sur cette réponse et c'répondre à votre question, vous pouvez vider le Server
avec URLRewrite à la place, qui reste disponible sur IIS 8/8.5 (avec quelques mises à jour nécessaires pour avoir son UI dans la console d'administration IIS).
Il s'avère, en regardant ce blog, qui URLScan peut encore être installé sur IIS 8/8.5, si le manque de soutien officiel n'est pas un problème.
Je ne me suis pas testé. Voici les étapes:
- Installer IIS 6 compatibilité de la Métabase (si pas déjà là)
- Installer des Filtres Isapi (si pas déjà là)
- Installer URLScan (from download-able installerer, not from web platform installerer)
- configurer URLScan par son
ini
fichier (par défaut dansC:\Windows\System32\inetsrv\urlscan
)
peut-être un peu iisreset
ou même un redémarrage doit être fait. URLScan doit être visible dans IIS parmi les filtres Isapi
pour le problème ci-dessus, ajouter le code ci-dessous dans Global.asax.cs
protected void Application_PreSendRequestHeaders()
{
Response.Headers.Remove("Server");
Response.AddHeader("Sample1", "Value1");
}
Il a obtenu le problème résolu après tant de navigation.
dans IIS Manager, au niveau du serveur, allez dans la vue des fonctionnalités. Cliquez sur les en-têtes de réponse HTTP. Vous pouvez ajouter/supprimer des en-têtes. Vous pouvez également gérer les en-têtes de réponse au niveau du site.