POST

HTTP POST 方法 发送数据给服务器. 请求主体的类型由 Content-Type 首部指定. 一个 POST 请求通常是通过 HTML 表单发送, 并返回服务器的修改结果. 在这种情况下, content type 是通过在 <form> 元素中设置正确的 enctype 属性, 或是在 <input><button> 元素中设置 formenctype 属性来选择的:

  • application/x-www-form-urlencoded: 数据被编码成以 '&' 分隔的键-值对, 同时以 '=' 分隔键和值. 非字母或数字的字符会被 percent encoded: 这也就是为什么这种类型不支持二进制数据的原因 (应使用 application/form-data 代替).
  • application/form-data
  • text/plain

当 POST 请求是通过除 HTML 表单之外的方式发送时, 例如使用 XMLHttpRequest, 那么请求主体可以是任何类型.

请求是否有主体 是
成功的响应是否有主体
Safe
Idempotent
Cacheable Only if freshness information is included
Allowed in HTML forms

语法

POST /index.html

示例

使用默认的 application/x-www-form-urlencoded 做为 content type 的简单表单:

POST / HTTP/1.1
Host: foo.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 13
say=Hi&to=Mom

使用 multipart/form-data 作为 content type 的表单:

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, section 4.3.3: POST Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content

浏览器兼容性

Feature Chrome Edge Firefox Internet Explorer Opera Safari Servo
Basic Support(Yes)(Yes)(Yes)(Yes)(Yes)(Yes)(Yes)
Feature Android Chrome for Android Edge Mobile Firefox for Android IE Mobile Opera Mobile Safari Mobile
Basic Support(Yes)(Yes)(Yes)(Yes)(Yes)(Yes)(Yes)

另见

文档标签和贡献者