Pregunta

He encontrado que el siguiente código asp.net es muy útil al servir archivos de una base de datos:

Response.AppendHeader("content-disposition", "attachment; filename=" + fileName);

Esto permite al usuario guardar el archivo en su computadora y luego decidir cómo usarlo, en lugar de que el navegador intente usar el archivo.

¿Qué otras cosas se pueden hacer con el encabezado de respuesta de disposición de contenido?

¿Fue útil?

Solución

Tenga en cuenta que RFC 6266 sustituye a los RFC mencionados a continuación. La Sección 7 describe algunos de los problemas de seguridad relacionados.

La autoridad en el encabezado de disposición de contenido es RFC 1806 y RFC 2183. La gente también ha ideado hackeo de disposición de contenido. Es importante tener en cuenta que el encabezado de disposición de contenido no forma parte del estándar HTTP 1.1.

El estándar HTTP 1.1 ( RFC 2616 ) también menciona los posibles efectos secundarios de seguridad de disposición de contenido:

  

15.5 Problemas de disposición de contenido

     

RFC 1806 [35], del cual a menudo   Implementación de contenido implementado
  (ver sección 19.5.1) el encabezado en HTTP es   derivado, tiene una serie de muy
  Consideraciones de seguridad serias.   La disposición de contenido no es parte de
  el estándar HTTP, pero como es   ampliamente implementado, estamos
  documentando su uso y riesgos para   implementadores Ver RFC 2183 [49]
  (que actualiza RFC 1806) para más detalles.

Otros consejos

Bueno, parece que el encabezado Content-Disposition se creó originalmente para el correo electrónico, no para la web. ( Enlace a RFC relevante .)

Supongo que los navegadores web pueden responder

Response.AppendHeader("content-disposition", "inline; filename=" + fileName);

al guardar, pero no estoy seguro.

Consulte RFC 6266 (Uso del campo de encabezado de disposición de contenido en el Protocolo de transferencia de hipertexto (HTTP)) http://tools.ietf.org/html/rfc6266

Para usuarios de asp.net, .NET Framework proporciona una clase para crear un encabezado de disposición de contenido: System.Net.Mime.ContentDisposition

Uso básico:

var cd = new System.Net.Mime.ContentDisposition();
cd.FileName = "myFile.txt";
cd.ModificationDate = DateTime.UtcNow;
cd.Size = 100;
Response.AppendHeader("content-disposition", cd.ToString());

Este encabezado se define en RFC 2183 , por lo que sería el mejor lugar para comenzar a leer.

Los valores permitidos son aquellos registrados con la Autoridad de Números Asignados de Internet (IANA); su registro de valores debe verse como la fuente definitiva.

Pensé que este artículo de KB en la sección de soporte de Microsoft está relacionado con la discusión aquí Cómo generar un cuadro de diálogo de descarga de archivos para un tipo mime conocido

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top