Une façon programmatique est d'utiliser un module HTTP, quelque chose comme ça (basé sur un SO answer by Luke):
namespace HttpModules
{
using System;
using System.Web;
public class RemoveExtraneousHeaderModule : IHttpModule
{
/// <summary>
/// Initializes a module and prepares it to handle requests.
/// </summary>
/// <param name="context">Provides access to the request context.</param>
public void Init(HttpApplication context)
{
context.PreSendRequestHeaders += this.OnPreSendRequestHeaders;
}
/// <summary>
/// Disposes of the resources (other than memory) used by this module.
/// </summary>
public void Dispose()
{
}
/// <summary>
/// Event raised just before ASP.NET sends HTTP headers to the client.
/// </summary>
/// <param name="sender">Event source.</param>
/// <param name="e">Event arguments.</param>
protected void OnPreSendRequestHeaders(object sender, EventArgs e)
{
NameValueCollection headers = HttpContext.Current.Response.Headers;
headers.Remove("Server");
headers.Remove("ETag");
headers.Remove("X-Powered-By");
headers.Remove("X-AspNet-Version");
headers.Remove("X-AspNetMvc-Version");
}
}
}
Le module est installé via web.config, sous <system.web>
pour IIS 6 et sous <system.webServer>
pour IIS 7.
Merci, qui est utile. Cependant, il semble inefficace pour IIS d'ajouter les en-têtes, puis d'avoir du code pour les supprimer à nouveau. Je préférerais vraiment les supprimer 'à la source'. Des idées brillantes? IIS ne rend pas cela facile. –
Ces en-têtes sont ajoutés par le code de base IIS, dont la conception n'expose pas la fonctionnalité de la même manière qu'Apache. L'utilisation d'un module comme celui-ci est très rapide, probablement plus rapide que d'avoir une fonction de gestion d'en-tête de niveau inférieur. – devstuff
Tout à fait d'accord. J'ai enquêté sur la suppression des en-têtes à l'aide d'un filtre Isapi, mais cela semblait obscur et il y a peu d'informations à ce sujet. Nous avons récemment adopté Akamai en tant que réseau de diffusion de contenu. Je cherche à manipuler les en-têtes à ce niveau, ce qui donne un contrôle plus granulaire. Essentiellement, le problème est toujours un manque de contrôle dans IIS. –