POST
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2015年7月.
HTTP POST 方法將數據發送到服務器。請求主體的類型由 Content-Type 標頭指示。
PUT 和 POST 之間的區別在於 PUT 是幂等的:調用一次或多次連續調用具有相同效果(即沒有副作用),而連續相同的 POST 可能會產生額外的效果,例如多次提交訂單。
POST 請求通常通過 HTML 表單發送,並導致服務器上的更改。在這種情況下,通過將適當的字串放入 <form> 元素的 enctype 屬性或 <input> 或 <button> 元素的 formenctype 屬性來選擇內容類型:
application/x-www-form-urlencoded:鍵和值以'&'分隔的鍵值元組形式進行編碼,鍵和值之間有'='。鍵和值中的非字母數字符號均已 URL 編碼:這就是為什麼此類型不適用於二進制數據(請改用multipart/form-data)。multipart/form-data:每個值都作為一個數據塊("主體部分")發送,由用戶代理定義的分隔符("邊界")分隔每個部分。鍵在每個部分的Content-Disposition標頭中給出。text/plain
當 POST 請求通過 HTML 表單之外的方法發送,例如 fetch() 調用時,主體可以採用任何類型。如 HTTP 1.1 規範所述,POST 被設計為允許一個統一的方法來涵蓋以下功能:
- 對現有資源進行註釋
- 將消息發佈到佈告板、新聞組、郵件列表或類似的文章組
- 通過註冊模式添加新用戶
- 將數據塊(例如提交表單的結果)提供給數據處理過程
- 通過附加操作擴展數據庫
語法
http
POST /test
範例
使用默認的 application/x-www-form-urlencoded 內容類型的簡單表單:
http
POST /test HTTP/1.1
Host: foo.example
Content-Type: application/x-www-form-urlencoded
Content-Length: 27
field1=value1&field2=value2
使用 multipart/form-data 內容類型的表單:
http
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--
規範
| Specification |
|---|
| HTTP Semantics> # POST> |
瀏覽器相容性
Loading…