POST
POST
POST
将数据发送到服务器。请求主体的类型由Content-Type
标题指示。
PUT和POST
之间的差PUT和POST
是,PUT
是幂等:调用它一次或多次连续具有相同的效果(也就是没有侧面
的效果),在那里连续的相同的POST
可具有额外的效果,如通过顺序数次。
POST请求经由通常发送 HTML 形式在服务器上的变化和结果。在这种情况下,内容类型是通过将适当的字符串在所选enctype的属性的<form>元件或所述的formenctype属性<input>或<button>元素:
application/x-www-form-urlencoded
:值被编码在由分离键-值元组'&'
,具有'='
键和值之间。非字母数字字符是百分比编码的:这就是为什么这种类型不适合与二进制数据一起使用的原因(用来multipart/form-data
代替)
multipart/form-data
text/plain
当通过 HTML 表单以外的方法发送POST
请求时 —— 例如通过XMLHttpRequest
- 可以采用任何类型的主体。如 HTTP 1.1规范中所述,POST
旨在允许统一的方法覆盖以下功能:
- 现有资源的标注
- 向公告板,新闻组,邮件列表或类似的文章组发布信息;
- 向数据处理过程提供一组数据,例如提交表单的结果;
- 通过追加操作扩展数据库。
请求具有正文 | 是 |
---|---|
成功的回应有身体 | 是 |
安全 | 没有 |
幂等 | 没有 |
可缓存 | 仅在包含新鲜度信息的情况下 |
在HTML表单中允许 | 是 |
语法
POST /index.html
示例
使用默认的application/x-www-form-urlencoded
内容类型的简单表单:
POST / HTTP/1.1
Host: foo.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 13
say=Hi&to=Mom
使用multipart/form-data
内容类型的表单:
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
规范
规范 | 标题 |
---|---|
RFC 7231,第4.3.3节:POST | 超文本传输协议(HTTP / 1.1):语义和内容 |
浏览器兼容性
Feature | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
Basic Support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
Feature | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
Basic Support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
也可以看看
Content-Type
Content-Disposition