POST 請求方法

Baseline 已廣泛支援

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 ⁨2015 年 7 月⁩以來,各瀏覽器均已提供此特性。

POST HTTP 方法用於向伺服器傳送資料。請求正文的型別由 Content-Type 標頭指示。

PUTPOST 的區別在於 PUT冪等的:呼叫一次與連續多次呼叫沒有區別(沒有副作用)。連續相同的 POST 請求可能會產生額外的效果,例如多次建立相同的訂單。

HTML 表單通常使用 POST 傳送資料,這通常會導致伺服器上的更改。對於 HTML 表單,正文內容的格式/編碼由 <form> 元素的 enctype 屬性或 <input><button> 元素的 formenctype 屬性決定。編碼可以是以下之一:

  • application/x-www-form-urlencoded:鍵和值以鍵值對的形式編碼,用 & 符號分隔,鍵和值之間用等號 (=) 分隔(例如,first-name=Frida&last-name=Kahlo)。鍵和值中的非字母數字字元都經過百分比編碼:這就是為什麼這種型別不適合與二進位制資料一起使用,你應該為此目的使用 multipart/form-data
  • multipart/form-data:每個值都作為資料塊(“正文部分”)傳送,使用者代理定義的定界符(例如,boundary="delimiter12345")分隔每個部分。鍵在每個部分或資料塊的 Content-Disposition 標頭中描述。
  • text/plain

POST 請求是在呼叫 fetch() 之後傳送的,或者出於 HTML 表單之外的任何其他原因時,正文可以是任何型別。如 HTTP 1.1 規範所述,POST 旨在提供一種統一的方法來涵蓋以下功能:

  • 對現有資源的註釋
  • 向公告板、新聞組、郵件列表或類似的文章組釋出訊息
  • 透過登錄檔單新增新使用者
  • 向資料處理過程提供資料塊,例如提交表單的結果
  • 透過追加操作擴充套件資料庫
請求有正文
成功響應有正文
安全
冪等
可快取 僅當包含新鮮度資訊時
允許在 HTML 表單中使用

語法

http
POST <request-target>["?"<query>] HTTP/1.1
<請求目標>

Host 標頭中提供的資訊結合使用時,標識請求的目標資源。這是對源伺服器的請求中的絕對路徑(例如,/path/to/file.html),以及對代理的請求中的絕對 URL(例如,http://www.example.com/path/to/file.html)。

<query> 可選

一個可選的查詢元件,前面帶有一個問號 ?。通常用於以 key=value 對的形式攜帶識別資訊。

示例

URL 編碼的表單提交

使用 application/x-www-form-urlencoded 內容編碼(預設)的表單傳送的請求中,正文包含以 key=value 對形式表示的表單資料,每對由 & 符號分隔,如下所示:

http
POST /test HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 27

field1=value1&field2=value2

多部分表單提交

當表單包含檔案或大量資料時,使用 multipart/form-data 編碼。此請求正文使用邊界字串分隔表單的每個部分。此格式的請求示例:

http
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--

Content-Disposition 標頭指示應如何處理表單資料,如果適用,指定欄位 namefilename

規範

規範
HTTP 語義
# POST

瀏覽器相容性

另見