Content-Disposition header field is an integral part of HTTP, providing directives to the recipient on how to process the response payload. Primarily, it’s used to signal whether the payload should be displayed inline within the browser’s context, or treated as a downloadable file. Additionally, it can also specify the preferred filename when saving the file.
First, let’s familiarize ourselves with the structure of the
Content-Disposition header field. Its syntax is as follows:
Content-Disposition: <disposition-type>; filename=<filename>
<disposition-type> can be
<filename> is an optional parameter specifying the filename.
inline directive indicates that the payload should be displayed directly within the user’s browser, if the media type is supported. For instance, when you navigate to an image URL and it opens within your browser, that’s the
inline disposition type at work.
Here’s an illustration of the
inline disposition type:
HTTP/1.1 200 OK Content-Type: image/jpeg Content-Disposition: inline; filename="picture.jpg" Content-Length: 2048
attachment directive, on the other hand, signifies that the payload should be downloaded and saved locally. If a filename is specified, the browser will default to it during the save file dialog, though users can modify it if they choose.
Here’s how an
attachment disposition type might look:
HTTP/1.1 200 OK Content-Type: application/pdf Content-Disposition: attachment; filename="report.pdf" Content-Length: 3072
In this case, the PDF file “report.pdf” is prompted for download instead of being displayed within the browser.
filename parameter is optional and can be included with either
attachment. It suggests a default filename when saving the file. If not specified, the browser may default to the filename in the URL, or generate one based on the URL’s path.
Keep in mind, when setting the
filename parameter, it’s good practice to ensure it’s encoded correctly to handle special characters. Consider using RFC 5987 encoding for non-ASCII characters. For instance:
HTTP/1.1 200 OK Content-Type: application/pdf Content-Disposition: attachment; filename*=UTF-8''%E2%82%AC%20rates.pdf Content-Length: 3072
Here, the filename “€ rates.pdf” has been encoded as “%E2%82%AC%20rates.pdf” to ensure proper handling of the euro symbol and space.
In essence, the
Content-Disposition HTTP header provides control over the presentation of response payloads, making it an essential part of effective content delivery. Whether you’re aiming for direct browser display with
inline, or triggering a file download with
attachment, the flexibility offered by this header field facilitates an improved user experience. The
filename parameter offers further customization, allowing you to suggest a default filename for saved files. As always, remember to encode special characters correctly to ensure universal compatibility.