Supprimer/Masquer/Désactiver les en-têtes de réponse HTTP excessifs dans Azure/IIS7 sans UrlScan

Supprimer/Masquer/Désactiver les en-têtes de réponse HTTP excessifs dans Azure/IIS7 sans UrlScan

Les modifications suivantes vous permettent de supprimer ces en-têtes de réponse HTTP dans Azure sans écrire un HttpModule personnalisé.

La plupart des informations sur le net sont obsolètes et impliquent UrlScan (qui a depuis été intégré dans IIS7, mais avec l’option RemoveServerHeader=1 supprimée). Ci-dessous se trouve la solution la plus propre que j’ai trouvée (grâce à ce blog, cette réponse, et ce blog combinés).

Pour supprimer Server, allez dans Global.asax, trouvez/créez l’événement Application_PreSendRequestHeaders et ajoutez ce qui suit (grâce à BK et ce blog, cela ne plantera pas non plus sur Cassini / en développement local) :

Modification d’avril 2014 : Vous pouvez utiliser les événements PreSendRequestHeaders et PreSendRequestContext avec les modules IIS natifs, mais ne les utilisez pas avec les modules managés qui implémentent IHttpModule. La définition de ces propriétés peut causer des problèmes avec les requêtes asynchrones. La version correcte est d’utiliser l’événement BeginRequest.

    protected void Application_BeginRequest(object sender, EventArgs e)
    {
        var application = sender as HttpApplication;
        if (application != null && application.Context != null)
        {
            application.Context.Response.Headers.Remove("Server");
        }
    }

Pour supprimer X-AspNet-Version, dans le web.config trouvez/créez <system.web> et ajoutez :

  <system.web>
    <httpRuntime enableVersionHeader="false" />

    ...

Pour supprimer X-AspNetMvc-Version, allez dans Global.asax, trouvez/créez l’événement Application_Start et ajoutez une ligne comme suit :

  protected void Application_Start()
  {
      MvcHandler.DisableMvc

*(Réponse tronquée)*