que - Usos de la disposición de contenido en un encabezado de respuesta HTTP
http para dummies (6)
He encontrado que el siguiente código asp.net es muy útil cuando se sirven 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 disposición-contenido?
Bueno, parece que el encabezado Content-Disposition fue creado originalmente para correo electrónico, no para la web. ( Enlace a la RFC correspondiente )
Supongo que los navegadores web pueden responder a
Response.AppendHeader("content-disposition", "inline; filename=" + fileName);
al guardar, pero no estoy seguro.
Consulte RFC 6266 (Uso del campo encabezado de disposición de contenido en el protocolo de transferencia de hipertexto (HTTP)) http://tools.ietf.org/html/rfc6266
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 en la Autoridad de números asignados de Internet (IANA); su registro de valores debe verse como la fuente definitiva.
La autoridad en el encabezado de disposición de contenido es RFC 1806 y RFC 2183. Las personas también han ideado la piratería de disposición de contenido. Es importante tener en cuenta que el encabezado content-disposition no es 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 la disposición del contenido:
15.5 Problemas de disposición de contenido
RFC 1806 [35], a partir de la cual el contenido-disposición a menudo implementado
(ver sección 19.5.1) se deriva el encabezado en HTTP, tiene un número muy
serias consideraciones de seguridad. Content-Disposition no es parte de
el estándar HTTP, pero dado que está ampliamente implementado, estamos
documentando su uso y riesgos para los implementadores. Ver RFC 2183 [49]
(que actualiza RFC 1806) para más detalles.
Tenga en cuenta que RFC 6266 reemplaza los RFC a los que se hace referencia a continuación. La Sección 7 describe algunas de las preocupaciones de seguridad relacionadas.
Para los 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());
Pensé que este artículo de KB sobre la sección de soporte de Microsoft está relacionado con la discusión aquí Cómo subir un cuadro de diálogo de descarga de archivo para un tipo de mimo conocido