HTTP Content-Disposition Explanation [ from MDN ]
在常规的HTTP应答中,Content-Disposition
消息头指示回复的内容该以何种形式展示,是以内联的形式(即网页或者页面的一部分),还是以附件的形式下载并保存到本地。
在multipart/form-data类型的应答消息体中, Content-Disposition
消息头可以被用在multipart消息体的子部分中,用来给出其对应字段的相关信息。各个子部分由在Content-Type
中定义的分隔符分隔。用在消息体自身则无实际意义。
Content-Disposition消息头最初是在MIME标准中定义的,HTTP表单及POST
请求只用到了其所有参数的一个子集。只有form-data
以及可选的name
和filename
三个参数可以应用在HTTP场景中。
Header type |
Response header (for the main body) General header (for a subpart of a multipart body) |
---|---|
Forbidden header name | no |
链接到章节语法
链接到章节作为消息主体中的消息头
在HTTP场景中,第一个参数或者是inline
(默认值,表示回复中的消息体会以页面的一部分或者整个页面的形式展示),或者是attachment
(意味着消息体应该被下载到本地;大多数浏览器会呈现一个“保存为”的对话框,将filename
的值预填为下载后的文件名,假如它存在的话)。
Content-Disposition: inline Content-Disposition: attachment Content-Disposition: attachment; filename="filename.jpg"
链接到章节作为multipart body中的消息头
在HTTP场景中。第一个参数总是固定不变的form-data
;附加的参数不区分大小写,并且拥有参数值,参数名与参数值用等号(=)连接,参数值用双引号括起来。参数之间用分号(;)分隔。
Content-Disposition: form-data Content-Disposition: form-data; name="fieldName" Content-Disposition: form-data; name="fieldName"; filename="filename.jpg"
链接到章节指令
name
后面是一个表单字段名的字符串,每一个字段名会对应一个子部分。在同一个字段名对应多个文件的情况下(例如,带有multiple
属性的<input type=file>
元素),则多个子部分共用同一个字段名。如果name参数的值为 '_charset_'
,意味着这个子部分表示的不是一个HTML字段,而是在未明确指定字符集信息的情况下各部分使用的默认字符集。
filename
后面是要传送的文件的初始名称的字符串。这个参数总是可选的,而且不能盲目使用:路径信息必须舍掉,同时要进行一定的转换以符合服务器文件系统规则。这个参数主要用来提供展示性信息。当与 Content-Disposition: attachment
一同使用的时候,它被用作"保存为"对话框中呈现给用户的默认文件名。
filename*
"filename" 和 "filename*" 两个参数的唯一区别在于,"filename*"采用了 RFC 5987 中规定的编码方式。当"filename" 和 "filename*" 同时出现的时候,应该优先采用"filename*",假如二者都支持的话。
链接到章节示例
以下是一则可以触发"保存为"对话框的服务器应答:
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
format 格式的报文中使用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--
链接到章节规范
Specification | Title |
---|---|
RFC 7578 | Returning Values from Forms: multipart/form-data |
RFC 6266 | Use of the Content-Disposition Header Field in the Hypertext Transfer Protocol (HTTP) |
RFC 2183 | Communicating Presentation Information in Internet Messages: The Content-Disposition Header Field |
链接到章节浏览器兼容性
新的兼容性表格正在测试中
Desktop | Mobile | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | Android webview | Chrome for Android | Edge Mobile | Firefox for Android | Opera for Android | iOS Safari | Samsung Internet | |
Basic support | Full supportYes | Full supportYes | Full supportYes | Full supportYes | Full supportYes | Full supportYes | Full supportYes | Full supportYes | Full supportYes | Full supportYes | Full supportYes | Full supportYes | Full supportYes |
Legend
Full support
Full support
链接到章节兼容性说明
- 在
filename
andfilename*
两个参数同时出现的情况下,Firefox 5 (比以前的版本)可以更好地处理Content-Disposition
应答消息头。它会遍历所有提供的名称,假如filename*
存在的话,就采用它的值,即使filename
更靠前。之前的版本会采用出现在前面的参数的值,导致有更合适的名称而不被使用。参见bug 588781.
链接到章节相关链接
- HTML Forms
Content-Type
中定义了 multipart body 的分隔符FormData
接口可以用来操作在XMLHttpRequest
API中使用的表单数据。
转载于:https://www.cnblogs.com/jinhengyu/p/10257791.html
HTTP Content-Disposition Explanation [ from MDN ]相关推荐
- 洛阳郊区1980年地图_在无聊的郊区居住中解释CSS Box模型
洛阳郊区1980年地图 by Kevin Kononenko 凯文·科诺年科(Kevin Kononenko) 如果您去过一个普通的郊区社区,那么您可以了解CSS Box Model. (If you ...
- Content-Type: application/vnd.ms-excel
Content-Disposition参数: attachment --- 作为附件下载 inline --- 在线打开 具体使用如:header("Content-Disposition: ...
- 命令测试post_性能测试脚本编写之三
>>>推荐阅读<<< 1.性能测试学习笔记-场景设计 2.性能测试的重要意义 3.性能分析流程及方法 4.应用系统性能调优之性能分析 ### web_url ### ...
- nginx lua调用redis和mongo
参考 http://blog.csdn.net/vboy1010/article/details/7892120 http://www.zhangjixuem.com.cn/2014/4/1/0103 ...
- 给 OpenPOP.Net 加一个小功能,可用于收取邮件时监测数据流量!
/* 最近写了一个自动收邮件的机器人,原来一开始偷懒"娶"了 COM 组件 JMail: <封装 JMail 4.4 的 POP3 为 .Net 组件 (.dll 程序集), ...
- C#控制台程序,发送邮件,可带附件
最近几天由于公司发送了大量内容相同的邮件,而被国外的反垃圾邮件组织列入了黑名单,致使很多客户收不到我们的邮件,客服接到投诉,而之前做的一个查询日志的小页面,因为某种原因,访问速度很慢,甚至这几天人一多 ...
- nodemailer的使用
前段时间有个很普通的项目需要发邮件的功能,而且是刚开始学nodejs,所以只是搜索了下用什么好的库能实现,就找到了nodemailer了.这篇文章主要是记录一下使用的过程和经验. 如何使用 这里就先上 ...
- Java Excel文件下载
使用servlet来下载文件,其原理非常简单,只要得到文件的输入流(或相应字节),然后写输出流即可.现就其中的几个细节问题展开: 1. MIME类型的设置: Web 浏览器使用 MIME 类型来识别非 ...
- 杂记-----------
1: excel导出时中文名乱码 (String. (.getBytes "文件名" "GBK") "iso8859-1"),需要把中文名编 ...
最新文章
- Mysql 5.5 源码安装
- php输出查询mysql中文乱码_解决php mysql查询插入中文乱码问题
- Java8中使用以下类计算日期时间差:Period、Duration、ChronoUnit
- 字符串经典题目(Leetcode题解-Python语言)
- 基于Fragment的百度地图框架的使用
- 【英语学习】【Daily English】U11 Work L01 Would you like a tour of the office?
- 用Aspose.Words 从Word文档中提取表格数据
- latex 目录层次设置
- 9年经验,总结SEO职业瓶颈
- c#使用office的墨迹书写工具
- VUE3+TS脚手架安装+目录文件规范
- 中文谚语 enlish version
- 电脑键盘上各个按键功能详解
- 设计模式:可复用面向对象软件的基础
- CSS公鸡走路动画js特效
- 键盘计算机论文,计算机论文
- 在计算机中文字的表示
- Hi-End音箱真伪(3)-巴汉著文
- PLC实现入栈出栈功能
- PPT结尾页,除了「谢谢」你还能写点啥?