POST

优质
小牛编辑
129浏览
2023-12-01

POST将数据发送到服务器。请求主体的类型由Content-Type标题指示。

PUT和POST之间的差PUTPOST是,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.1Host: foo.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 13say=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