在线文档教程

Content-Disposition

Content-Disposition

在常规 HTTP 响应中,Content-Disposition响应标头是指示内容是否预期在浏览器中内联显示的标题,即,作为网页或作为网页的一部分或作为附件下载并且本地保存。

在一个multipart/form-data正文中,HTTP Content-Disposition通用标题是一个标题,可以在多部分主体的子部分中使用,以提供有关它适用的字段的信息。子部分由标题中定义的边界分隔Content-Type。用于身体本身,Content-Disposition没有任何作用。

所述Content-Disposition的 header 在 MIME 消息的电子邮件的更大的范围内定义的,但仅可能的参数的子集应用于 HTTP 形式和POST请求。只有值form-data,以及可选的指令namefilename,可以在 HTTP 上下文中使用。

Header typeResponse header (for the main body) General header (for a subpart of a multipart body)
Forbidden header nameno

语法

作为主体的响应标题

HTTP 上下文中的第一个参数是inline(默认值,表示它可以显示在网页内,或作为网页)或attachment(表示它应该下载;大多数浏览器呈现“另存为”对话框,预先填入filename如果存在参数的值

Content-Disposition: inline Content-Disposition: attachment Content-Disposition: attachment; filename="filename.jpg"

作为多部分主体的 header

HTTP 上下文中的第一个参数总是form-data; 其他参数不区分大小写,并且有参数,在'='符号后面使用带引号的字符串语法。多个参数用分号(';')分隔。

Content-Disposition: form-data Content-Disposition: form-data; name="fieldName" Content-Disposition: form-data; name="fieldName"; filename="filename.jpg"

指令

name后面跟着一个字符串,其中包含该字段的内容引用的 HTML 字段的名称。在同一字段中处理多个文件(例如元素的multiple属性<input type=file>)时,可能会有几个具有相同名称的子部分。

一个name有值'_charset_'表明该部分不是 HTML 区域,但默认字符集,而无需显式的字符集信息使用的部分。

参数“filename”和“filename *”的区别仅在于“filename *”使用RFC 5987中定义的编码。当“文件名”和“文件名*”都出现在单个标题字段值中时,“文件名*”优于“文件名”,当两者都存在并被理解时。

例子

触发“另存为”对话框的响应:

200 OK Content-Type: text/html; charset=utf-8 Content-Disposition: attachment; filename="cool.html" Content-Length: 22 <HTML>Save me!</HTML>

这个简单的 HTML 文件将被保存为常规下载而不是在浏览器中显示。大多数浏览器会建议将其保存在cool.html文件名下(默认情况下)。

HTML 表单的一个示例,使用multipart/form-data使用Content-Disposition标题的格式发布:

POST /test.html HTTP/1.1 Host: example.org Content-Type: multipart/form-data;boundary="boundary" --boundary Content-Disposition: form-data; name="field1" value1 --boundary Content-Disposition: form-data; name="field2"; filename="example.txt" value2 --boundary--

规范

SpecificationTitle
RFC 7578Returning Values from Forms: multipart/form-data
RFC 6266Use of the Content-Disposition Header Field in the Hypertext Transfer Protocol (HTTP)
RFC 2183Communicating Presentation Information in Internet Messages: The Content-Disposition Header Field

浏览器兼容性

FeatureChromeFirefoxEdgeInternet ExplorerOperaSafari
Basic Support(Yes)(Yes)(Yes)(Yes)(Yes)(Yes)

FeatureAndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
Basic Support(Yes)(Yes)(Yes)(Yes)(Yes)(Yes)(Yes)

兼容性说明

  • Content-Disposition如果提供了参数filenamefilename*参数,Firefox 5 将更有效地处理 HTTP 响应头; 它会查看所有提供的名称,filename*如果有可用的名称,则使用参数,即使filename首先包含参数。以前,将使用第一个匹配参数,从而阻止使用更合适的名称。见错误588781。见还

  • The Content-Type defining the boundary of the multipart body.

  • The FormData interface used to manipulate form data for use in the XMLHttpRequest API.