POST request method
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Phương thức HTTP POST gửi dữ liệu đến máy chủ. Kiểu của phần thân yêu cầu được chỉ định bởi tiêu đề Content-Type.
Sự khác biệt giữa PUT và POST là PUT có tính bất biến: gọi một lần không khác gì gọi nhiều lần liên tiếp (không có tác dụng phụ).
Các yêu cầu POST giống nhau liên tiếp có thể có các tác dụng bổ sung, chẳng hạn như tạo cùng một đơn hàng nhiều lần.
Biểu mẫu HTML thường gửi dữ liệu bằng POST và điều này thường dẫn đến sự thay đổi trên máy chủ.
Với biểu mẫu HTML, định dạng/mã hóa của nội dung phần thân được xác định bởi thuộc tính enctype của phần tử <form> hoặc thuộc tính formenctype của phần tử <input> hoặc <button>.
Mã hóa có thể là một trong các loại sau:
application/x-www-form-urlencoded: các khóa và giá trị được mã hóa thành các bộ giá trị khóa-giá trị phân tách bằng ký hiệu và (&), với ký hiệu bằng (=) giữa khóa và giá trị (ví dụ:first-name=Frida&last-name=Kahlo). Các ký tự không phải chữ-số trong cả khóa và giá trị đều được mã hóa phần trăm: đây là lý do tại sao loại này không phù hợp để dùng với dữ liệu nhị phân và bạn nên dùngmultipart/form-datacho mục đích đó.multipart/form-data: mỗi giá trị được gửi dưới dạng một khối dữ liệu ("phần thân"), với dấu phân cách do user agent xác định (ví dụ:boundary="delimiter12345") phân tách từng phần. Các khóa được mô tả trong tiêu đềContent-Dispositioncủa mỗi phần hoặc khối dữ liệu.text/plain
Khi yêu cầu POST được gửi sau một lệnh gọi fetch(), hoặc vì lý do nào đó không phải từ biểu mẫu HTML, phần thân có thể là bất kỳ loại nào.
Như được mô tả trong đặc tả HTTP 1.1, POST được thiết kế để cho phép một phương thức thống nhất bao quát các chức năng sau:
- Chú thích cho các tài nguyên hiện có
- Đăng một tin nhắn lên bảng tin, nhóm tin tức, danh sách thư, hoặc nhóm bài viết tương tự
- Thêm người dùng mới thông qua biểu mẫu đăng ký
- Cung cấp một khối dữ liệu, chẳng hạn như kết quả gửi biểu mẫu, đến một quy trình xử lý dữ liệu
- Mở rộng cơ sở dữ liệu thông qua thao tác nối thêm
| Yêu cầu có phần thân | Có |
|---|---|
| Phản hồi thành công có phần thân | Có |
| An toàn | Không |
| Bất biến | Không |
| Có thể lưu đệm | Chỉ khi có thông tin độ tươi mới |
| Cho phép trong HTML forms | Có |
Cú pháp
POST <request-target>["?"<query>] HTTP/1.1
<request-target>-
Xác định tài nguyên đích của yêu cầu khi kết hợp với thông tin được cung cấp trong tiêu đề
Host. Đây là đường dẫn tuyệt đối (ví dụ:/path/to/file.html) trong các yêu cầu đến máy chủ gốc, và là URL tuyệt đối trong các yêu cầu đến proxy (ví dụ:http://www.example.com/path/to/file.html). <query>Optional-
Thành phần truy vấn tùy chọn được đặt trước dấu hỏi
?. Thường được dùng để mang thông tin nhận dạng dưới dạng các cặpkey=value.
Ví dụ
>Gửi biểu mẫu mã hóa URL
Một biểu mẫu sử dụng mã hóa nội dung application/x-www-form-urlencoded (mặc định) gửi một yêu cầu trong đó phần thân chứa dữ liệu biểu mẫu ở dạng các cặp key=value, mỗi cặp được phân tách bằng ký hiệu &, như được hiển thị bên dưới:
POST /test HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 27
field1=value1&field2=value2
Gửi biểu mẫu multipart
Mã hóa multipart/form-data được sử dụng khi một biểu mẫu bao gồm tệp hoặc lượng lớn dữ liệu.
Phần thân yêu cầu này phân định từng phần của biểu mẫu bằng một chuỗi ranh giới.
Ví dụ về một yêu cầu theo định dạng này:
POST /test HTTP/1.1
Host: example.com
Content-Type: multipart/form-data;boundary="delimiter12345"
--delimiter12345
Content-Disposition: form-data; name="field1"
value1
--delimiter12345
Content-Disposition: form-data; name="field2"; filename="example.txt"
value2
--delimiter12345--
Tiêu đề Content-Disposition chỉ ra cách dữ liệu biểu mẫu sẽ được xử lý, chỉ định name (tên) trường và filename (tên tệp), nếu thích hợp.
Đặc tả
| Specification |
|---|
| HTTP Semantics> # POST> |
Khả năng tương thích với trình duyệt
Xem thêm
- Các phương thức yêu cầu HTTP
- Mã trạng thái phản hồi HTTP
- Tiêu đề HTTP
- Tiêu đề
Content-Type - Tiêu đề
Content-Disposition - Phương thức
GET