POST 請求方法
POST HTTP 方法用於向伺服器傳送資料。請求正文的型別由 Content-Type 標頭指示。
PUT 和 POST 的區別在於 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 旨在提供一種統一的方法來涵蓋以下功能:
- 對現有資源的註釋
- 向公告板、新聞組、郵件列表或類似的文章組釋出訊息
- 透過登錄檔單新增新使用者
- 向資料處理過程提供資料塊,例如提交表單的結果
- 透過追加操作擴充套件資料庫
語法
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 對形式表示的表單資料,每對由 & 符號分隔,如下所示:
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 編碼。此請求正文使用邊界字串分隔表單的每個部分。此格式的請求示例:
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 標頭指示應如何處理表單資料,如果適用,指定欄位 name 和 filename。
規範
| 規範 |
|---|
| HTTP 語義 # POST |
瀏覽器相容性
載入中…