Pergunta

Eu encontrei o seguinte código asp.net para ser muito útil quando serve arquivos de um banco de dados:

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

Isso permite que o usuário salvar o arquivo para o seu computador e então decidir como usá-lo, em vez do navegador tentar usar o arquivo.

O que outras coisas podem ser feitas com o cabeçalho de resposta Content-Disposition?

Foi útil?

Solução

Note que RFC 6266 substitui a RFC relacionado abaixo. Secção 7 descreve algumas das preocupações de segurança relacionadas.

A autoridade sobre o cabeçalho Content-Disposition é RFC 1806 e RFC 2183. As pessoas têm também inventou content-disposition hacking. é importante notar que o cabeçalho de disposição do conteúdo não é parte do HTTP 1.1 padrão.

O HTTP 1.1 padrão ( RFC 2616 ) também menciona os possíveis efeitos colaterais de segurança de disposição do conteúdo:

Issues 15,5 Content-Disposition

RFC 1806 [35], a partir do qual a freqüência Content-Disposition implementado
(Ver secção 19.5.1) em cabeçalho HTTP é derivada, tem um número de muito
considerações de segurança graves. Content-Disposition não faz parte do
o padrão HTTP, mas uma vez que é amplamente implementado, we are documentando a sua utilização e riscos para implementadores. Veja RFC 2183 [49]
(Que atualiza RFC 1806) para mais detalhes.

Outras dicas

Bem, parece que o cabeçalho Content-Disposition foi originalmente criado para o e-mail, não a web. ( Link para RFC relevante.)

Eu estou supondo que os navegadores podem responder a

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

quando salvar, mas eu não tenho certeza.

Consulte a RFC 6266 (Uso do Conteúdo-Disposição cabeçalho campo no Hypertext Transfer Protocol (HTTP)) http://tools.ietf.org/html/rfc6266

Para usuários ASP.NET, o .NET framework fornece uma classe para criar um cabeçalho de disposição de conteúdo: 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 cabeçalho é definido na RFC 2183 , de modo que seria o melhor lugar para começar a leitura.

Os valores permitidos são aqueles registrados com a Internet Assigned Numbers Authority (IANA); sua registro de valores deve ser visto como a fonte definitiva.

Pensamento este artigo KB na seção de suporte Microsoft está relacionada com a discussão aqui Como aumentar uma caixa de diálogo de download de arquivo para um tipo mime conhecido

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top