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):语义和内容

浏览器兼容性

FeatureChromeEdgeFirefoxInternet 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-Type

  • Content-Disposition