Uses of content-disposition in an HTTP response header

HttpHttp HeadersHttpwebresponseHttpresponseContent Disposition

Http Problem Overview


I have found the following asp.net code to be very useful when serving files from a database:

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

This lets the user save the file to their computer and then decide how to use it, instead of the browser trying to use the file.

What other things can be done with the content-disposition response header?

Http Solutions


Solution 1 - Http

Note that RFC 6266 supersedes the RFCs referenced below. Section 7 outlines some of the related security concerns.

The authority on the content-disposition header is RFC 1806 and RFC 2183. People have also devised content-disposition hacking. It is important to note that the content-disposition header is not part of the HTTP 1.1 standard.

The HTTP 1.1 Standard (RFC 2616) also mentions the possible security side effects of content disposition:

> 15.5 Content-Disposition Issues > > RFC 1806 [35], from which the often > implemented Content-Disposition
> (see section 19.5.1) header in HTTP is > derived, has a number of very
> serious security considerations. > Content-Disposition is not part of
> the HTTP standard, but since it is > widely implemented, we are
> documenting its use and risks for > implementors. See RFC 2183 [49]
> (which updates RFC 1806) for details.

Solution 2 - Http

Well, it seems that the Content-Disposition header was originally created for e-mail, not the web. (http://www.ietf.org/rfc/rfc2183.txt">Link to relevant RFC.)

I'm guessing that web browsers may respond to

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

when saving, but I'm not sure.

Solution 3 - Http

Refer to RFC 6266 (Use of the Content-Disposition Header Field in the Hypertext Transfer Protocol (HTTP)) https://www.rfc-editor.org/rfc/rfc6266

Solution 4 - Http

For asp.net users, the .NET framework provides a class to create a content disposition header: System.Net.Mime.ContentDisposition

Basic usage:

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

Solution 5 - Http

This header is defined in RFC 2183, so that would be the best place to start reading.

Permitted values are those registered with the Internet Assigned Numbers Authority (IANA); their registry of values should be seen as the definitive source.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionRonnie OverbyView Question on Stackoverflow
Solution 1 - HttpAndrewView Answer on Stackoverflow
Solution 2 - HttpMiffTheFoxView Answer on Stackoverflow
Solution 3 - HttpManish PaiView Answer on Stackoverflow
Solution 4 - HttponofView Answer on Stackoverflow
Solution 5 - HttpNickFitzView Answer on Stackoverflow