POST

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.

HTTP POST 方法將數據發送到服務器。請求主體的類型由 Content-Type 標頭指示。

PUTPOST 之間的區別在於 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 被設計為允許一個統一的方法來涵蓋以下功能:

  • 對現有資源進行註釋
  • 將消息發佈到佈告板、新聞組、郵件列表或類似的文章組
  • 通過註冊模式添加新用戶
  • 將數據塊(例如提交表單的結果)提供給數據處理過程
  • 通過附加操作擴展數據庫
請求是否有主體
成功回應是否有主體
安全
冪等
可緩存 僅當包含新鮮度信息時
HTML 表單中是否允許

語法

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

瀏覽器相容性

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
POST

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

參見