POST - HTTP 编辑
The HTTP POST
method sends data to the server. The type of the body of the request is indicated by the Content-Type
header.
The difference between PUT
and POST
is that PUT
is idempotent: calling it once or several times successively has the same effect (that is no side effect), where successive identical POST
may have additional effects, like passing an order several times.
A POST
request is typically sent via an HTML form and results in a change on the server. In this case, the content type is selected by putting the adequate string in the enctype
attribute of the <form>
element or the formenctype
attribute of the <input>
or <button>
elements:
application/x-www-form-urlencoded
: the keys and values are encoded in key-value tuples separated by'&'
, with a'='
between the key and the value. Non-alphanumeric characters in both keys and values are percent encoded: this is the reason why this type is not suitable to use with binary data (usemultipart/form-data
instead)multipart/form-data
: each value is sent as a block of data ("body part"), with a user agent-defined delimiter ("boundary") separating each part. The keys are given in theContent-Disposition
header of each part.text/plain
When the POST
request is sent via a method other than an HTML form — like via an XMLHttpRequest
— the body can take any type. As described in the HTTP 1.1 specification, POST
is designed to allow a uniform method to cover the following functions:
- Annotation of existing resources
- Posting a message to a bulletin board, newsgroup, mailing list, or similar group of articles;
- Adding a new user through a signup modal;
- Providing a block of data, such as the result of submitting a form, to a data-handling process;
- Extending a database through an append operation.
Request has body | Yes |
---|---|
Successful response has body | Yes |
Safe | No |
Idempotent | No |
Cacheable | Only if freshness information is included |
Allowed in HTML forms | Yes |
Syntax
POST /test
Example
A simple form using the default application/x-www-form-urlencoded
content type:
POST /test HTTP/1.1 Host: foo.example Content-Type: application/x-www-form-urlencoded Content-Length: 27 field1=value1&field2=value2
A form using the multipart/form-data
content type:
POST /test HTTP/1.1 Host: foo.example 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--
Specifications
Specification | Title |
---|---|
RFC 7231, section 4.3.3: POST | Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content |
RFC 2046, section 5.1.1: Common Syntax | Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types |
Browser compatibility
BCD tables only load in the browser
The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
See also
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论