Domanda

Ho trovato il seguente codice asp.net molto utile quando si servono file da un database:

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

Ciò consente all'utente di salvare il file sul proprio computer e quindi di decidere come utilizzarlo, anziché il browser che tenta di utilizzare il file.

Quali altre cose si possono fare con l'intestazione della risposta di disposizione del contenuto?

È stato utile?

Soluzione

Nota che RFC 6266 sostituisce gli RFC indicati di seguito. Sezione 7 delinea alcuni dei problemi di sicurezza correlati.

L'autorità nell'intestazione di disposizione del contenuto è RFC 1806 e RFC 2183. Le persone hanno anche ideato hacking di content-disposition. È importante notare che l'intestazione di content-disposition non fa parte dello standard HTTP 1.1.

Lo standard HTTP 1.1 ( RFC 2616 ) menziona anche i possibili effetti collaterali della sicurezza di disposizione dei contenuti:

  

15.5 Problemi di smaltimento dei contenuti

     

RFC 1806 [35], da cui spesso   implementato Content-Disposition
  (vedi sezione 19.5.1) l'intestazione in HTTP è   derivato, ha un certo numero di
  gravi considerazioni di sicurezza.   La disposizione dei contenuti non fa parte di
  lo standard HTTP, ma dal momento che lo è   ampiamente implementato, siamo
  documentandone l'uso e i rischi   implementatori. Vedi RFC 2183 [49]
  (che aggiorna RFC 1806) per i dettagli.

Altri suggerimenti

Bene, sembra che l'intestazione Content-Disposition sia stata originariamente creata per la posta elettronica, non per il web. ( Link alla RFC pertinente .)

Suppongo che i browser web possano rispondere

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

durante il salvataggio, ma non sono sicuro.

Fare riferimento a RFC 6266 (Uso del campo di intestazione di disposizione del contenuto nel protocollo di trasferimento ipertestuale (HTTP)) http://tools.ietf.org/html/rfc6266

Per gli utenti asp.net, il framework .NET fornisce una classe per creare un'intestazione di disposizione del contenuto: System.Net.Mime.ContentDisposition

Utilizzo di base:

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

Questa intestazione è definita in RFC 2183 , quindi sarebbe il posto migliore per iniziare a leggere.

I valori consentiti sono quelli registrati presso Internet Assigned Numbers Authority (IANA); il loro registro dei valori dovrebbe essere visto come la fonte definitiva.

Pensato che questo articolo KB sulla sezione di supporto Microsoft sia correlato alla discussione qui Come aumentare una finestra di dialogo di download di file per un tipo mime noto

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top