Saltar al contenido

Artículos, tutoriales, trucos, curiosidades, reflexiones y links sobre programación web ASP.NET Core, MVC, Blazor, SignalR, Entity Framework, C#, Azure, Javascript... y lo que venga ;)

17 años online

el blog de José M. Aguilar

Inicio El autor Contactar

Artículos, tutoriales, trucos, curiosidades, reflexiones y links sobre programación web
ASP.NET Core, MVC, Blazor, SignalR, Entity Framework, C#, Azure, Javascript...

¡Microsoft MVP!
martes, 19 de enero de 2016

ASP.NET CoreHace poco veíamos cómo crear un middleware capaz de realizar transformaciones simples en los encabezados de respuesta de nuestras aplicaciones ASP.NET Core.

Nuestro componente, al que habíamos llamado HeaderTransformMiddleware, podíamos añadirlo al pipeline indicándole qué encabezados queríamos modificar y con qué valores (o nulo, si lo que queríamos era eliminar el encabezado). Por ejemplo, con el siguiente código añadíamos el encabezado "X-Author" y suprimíamos "Server":
var transforms = new Dictionary<string, string>()
{
    ["X-Author"] = "José M. Aguilar",
    ["Server"] = null
};
app.UseHeaderTransform(transforms);
Tras añadirlo al pipeline, la ejecución de una petición a una aplicación podríamos tener el siguiente resultado en los encabezados:
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Vary: Accept-Encoding
X-Author: José M. Aguilar
X-Powered-By: ASP.NET
Content-Length: 8011
El problema viene cuando intentamos eliminar ese "X-Powered-By: ASP.NET" que aparece siempre que ejecutamos nuestra aplicación sobre IIS Express o IIS. En este caso, cualquier intento de eliminarlo usando middlewares será infructuoso.

El motivo es que este encabezado no es añadido a la respuesta desde el pipeline; es IIS el que lo añade una vez finaliza el proceso de la petición a través del pipeline. De hecho, si corremos la aplicación usando directamente Kestrel (desde línea de comandos o bien desde Visual Studio) veremos que el "X-Powered-By" no aparece.

Y entonces, ¿no podemos eliminarlo? Pues sí, claro que podemos, aunque no desde ASP.NET sino desde el propio IIS que es el "culpable" de que aparezca ahí.

La forma más sencilla de hacerlo es acudir al archivo web.config presente en la carpeta "wwwroot" o el raíz que hayáis elegido para vuestro sitio web, e introducir la siguiente sección:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <!-- 
       ... Aquí van otras secciones, como la configuración 
       de HTTP platform handler 
    -->
    <httpProtocol>
      <customHeaders>
        <remove name="X-Powered-By" />
      </customHeaders>
    </httpProtocol>
  </system.webServer>
</configuration>
De esta forma, el encabezado "X-Powered-By" desaparecerá de las respuestas, eliminando información sobre la tecnología que estáis usando en vuestra aplicación.

Espero que os sea útil :)

Publicado en Variable not found.

Aún no hay comentarios, ¡sé el primero!