1)先把form表單裡的表單元素的name屬性和value屬性進行收集。
2)按照enctype屬性的設定,選擇合適的編碼方式,對資料進行編碼,放在請求頭里
3)瀏覽器進行傳送。
此時可以看到:
title=test&sub%5b%5d=1&sub%5b%5d=2&sub%5b%5d=3
1)它是post的預設格式,使用js中urlencode轉碼方法。
包括將name、value中的空格替換為加號;將非ascii字元做百分號編碼;將input的name、value用『=』連線,不同的input之間用『&』連線。
2)百分號編碼什麼意思呢。
比如漢字『丁』吧,他的utf8編碼在十六進製制下是0xe4b881,佔3個位元組,把它轉成字串『e4b881』,變成了六個位元組,每兩個位元組前加上百分號字首,得到字串「%e4%b8%81」,變成九個ascii字元,佔九個位元組(十六進製制下是0x244534254238253831)。
把這九個位元組拼接到資料報裡,這樣就可以傳輸「非ascii字元的 utf8編碼的 十六進製制表示的 字串的 百分號形式」,^_^。
3)同樣使用urlencode轉碼,這種post格式跟get的區別在於,get把轉換、拼接完的字串用『?』直接與表單的action連線作為url使用,所以請求體裡沒有資料;
而post把轉換、拼接後的字串放在了請求體裡,不會在瀏覽器的位址列顯示,因而更安全一些。
這也是常見的post請求方式,一般用來上傳檔案,各大伺服器的支援也比較好。
所以我們使用表單 上傳檔案 時,必須讓
瀏覽器將會傳送以下資料:
從上面的 multipart/form-data 格式傳送的請求的樣式來看,
它包含了多個 parts,每個 part 都包含頭資訊部分,part 頭資訊中必須包含乙個 content-disposition 頭,
其他的頭資訊則為可選項, 比如 content-type 等。
content-disposition 包含了 type 和 乙個名字為 name 的 parameter,
type 是 form-data,name 引數的值則為表單控制項(也即 field)的名字,
如果是檔案,那麼還有乙個 filename 引數,值就是檔名。
比如:
content-disposition: form-data; name="user"; filename="hello.txt"
上面的 「user」 就是表單中的控制項的名字,後面的引數 filename 則是點選的檔名。對於可選的 content-type(如果沒有的話),預設就是 text/plain。下面,我們填充兩個檔案到乙個表單項中,行程的請求資訊如下:
content-type: multipart/form-data; boundary=aab03x
--aab03x
content-disposition: form-data; name="submit-name"
larry
--aab03x
content-disposition: form-data; name="files"
content-type: multipart/mixed; boundary=bbc04y
--bbc04y
content-disposition: file; filename="file1.txt"
content-type: text/plain
... contents of file1.txt ...
--bbc04y
content-disposition: file; filename="file2.gif"
content-type: image/gif
content-transfer-encoding: binary
...contents of file2.gif...
--bbc04y--
--aab03x--
http post請求方式
1 先把form表單裡的表單元素的name屬性和value屬性進行收集。2 按照enctype屬性的設定,選擇合適的編碼方式,對資料進行編碼,放在請求頭里 3 瀏覽器進行傳送。此時可以看到 title test sub 5b 5d 1 sub 5b 5d 2 sub 5b 5d 3 1 它是post...
php 傳送http post請求
php curl post請求中攜帶header引數 或者 header 0 text html q 0.9,text plain q 0.8,image png,q 0.5 header cache control max age 0 header connection keep alive he...
HTTP Post請求過程詳解
摘要 http hypertext transfer protocol 超文字傳輸協議,是乙個客戶端和伺服器端請求和應答的標準 tcp 客戶端是終端使用者,伺服器端是 http是基於socket之上的協議。http post是上傳資料到伺服器。請求報文 12 post post請求 web logi...