http的Content-type

POST請求的消息主體放在entity body中,服務端根據(jù)請求頭中的Content-Type字段來獲取消息主體的編碼方式司训,進而進行解析數(shù)據(jù)构捡。

一、application/x-www-form-urlencoded

最常見的 POST 提交數(shù)據(jù)的方式壳猜,原生Form表單勾徽,如果不設(shè)置 enctype 屬性,默認為application/x-www-form-urlencoded 方式提交數(shù)據(jù)统扳。

首先捂蕴,Content-Type被指定為 application/x-www-form-urlencoded;其次闪幽,提交的表單數(shù)據(jù)會轉(zhuǎn)換為鍵值對并按照 key1=val1&key2=val2 的方式進行編碼啥辨,key 和 val 都進行了 URL 轉(zhuǎn)碼。大部分服務端語言都對這種方式有很好的支持盯腌。
另外溉知,如利用AJAX 提交數(shù)據(jù)時,也可使用這種方式腕够。例如 jQuery级乍,Content-Type 默認值都是”application/x-www-form-urlencoded;charset=utf-8”。
二帚湘、multipart/form-data

另一個常見的 POST 數(shù)據(jù)提交的方式玫荣, Form 表單的 enctype 設(shè)置為multipart/form-data,它會將表單的數(shù)據(jù)處理為一條消息大诸,以標簽為單元捅厂,用分隔符(這就是boundary的作用)分開,類似我們上面Content-Type中的例子资柔。
 由于這種方式將數(shù)據(jù)有很多部分焙贷,它既可以上傳鍵值對,也可以上傳文件贿堰,甚至多個文件辙芍。當上傳的字段是文件時,會有Content-Type來說明文件類型;Content-disposition故硅,用來說明字段的一些信息庶灿。每部分都是以 –boundary 開始,緊接著是內(nèi)容描述信息吃衅,然后是回車往踢,最后是字段具體內(nèi)容(字段、文本或二進制等)捐晶。如果傳輸?shù)氖俏募朴铮€要包含文件名和文件類型信息妄辩。消息主體最后以 –boundary– 標示結(jié)束惑灵。

三、application/json

Content-Type: application/json 作為響應頭比較常見眼耀。實際上英支,現(xiàn)在越來越多的人把它作為請求頭,用來告訴服務端消息主體是序列化后的 JSON 字符串哮伟,其中一個好處就是JSON 格式支持比鍵值對復雜得多的結(jié)構(gòu)化數(shù)據(jù)干花。由于 JSON 規(guī)范的流行,除了低版本 IE 之外的各大瀏覽器都原生支持JSON.stringify楞黄,服務端語言也都有處理 JSON 的函數(shù)池凄,使用起來沒有困難。
Google 的 AngularJS 中的 Ajax 功能鬼廓,默認就是提交 JSON 字符串肿仑。
四、text/xml

XML的作用不言而喻碎税,用于傳輸和存儲數(shù)據(jù)尤慰,它非常適合萬維網(wǎng)傳輸,提供統(tǒng)一的方法來描述和交換獨立于應用程序或供應商的結(jié)構(gòu)化數(shù)據(jù)雷蹂,在JSON出現(xiàn)之前是業(yè)界一大標準(當然現(xiàn)在也是)伟端,相比JSON的優(yōu)缺點大家有興趣可以上網(wǎng)search。因此匪煌,在POST提交數(shù)據(jù)時责蝠,xml類型也是不可缺少的一種,雖然一般場景上使用JSON可能更輕巧萎庭、靈活玛歌。
五、binary (application/octet-stream)

在Chrome瀏覽器的Postman工具中擎椰,還可以看到”binary“這一類型支子,指的就是一些二進制文件類型。如application/pdf达舒,指定了特定二進制文件的MIME類型值朋。就像對于text文件類型若沒有特定的子類型(subtype)叹侄,就使用 text/plain。類似的昨登,二進制文件沒有特定或已知的 subtype趾代,就使用 application/octet-stream,這是應用程序文件的默認值丰辣,一般很少直接使用 撒强。

對于application/octet-stream,只能提交二進制笙什,而且只能提交一個二進制飘哨,如果提交文件的話,只能提交一個文件琐凭,后臺接收參數(shù)只能有一個芽隆,而且只能是流(或者字節(jié)數(shù)組)。

很多web服務器使用默認的 application/octet-stream 來發(fā)送未知類型统屈。出于一些安全原因胚吁,對于這些資源瀏覽器不允許設(shè)置一些自定義默認操作,導致用戶必須存儲到本地以使用愁憔。一般來說腕扶,設(shè)置正確的MIME類型很重要。

作者: chenlife
出處:https://www.cnblogs.com/smartlife/articles/12439441.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末吨掌,一起剝皮案震驚了整個濱河市半抱,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌思犁,老刑警劉巖代虾,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異激蹲,居然都是意外死亡棉磨,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門学辱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來乘瓤,“玉大人,你說我怎么就攤上這事策泣⊙每” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵萨咕,是天一觀的道長统抬。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么聪建? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任钙畔,我火速辦了婚禮,結(jié)果婚禮上金麸,老公的妹妹穿的比我還像新娘擎析。我一直安慰自己,他們只是感情好挥下,可當我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布揍魂。 她就那樣靜靜地躺著,像睡著了一般棚瘟。 火紅的嫁衣襯著肌膚如雪现斋。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天解取,我揣著相機與錄音步责,去河邊找鬼返顺。 笑死禀苦,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的遂鹊。 我是一名探鬼主播振乏,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼秉扑!你這毒婦竟也來了慧邮?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤舟陆,失蹤者是張志新(化名)和其女友劉穎误澳,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體秦躯,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡忆谓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了踱承。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片倡缠。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖茎活,靈堂內(nèi)的尸體忽然破棺而出昙沦,到底是詐尸還是另有隱情,我是刑警寧澤载荔,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布盾饮,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏丘损。R本人自食惡果不足惜芍碧,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望号俐。 院中可真熱鬧泌豆,春花似錦、人聲如沸吏饿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽祠汇。三九已至,卻和暖如春瓢捉,著一層夾襖步出監(jiān)牢的瞬間笨忌,已是汗流浹背蓝仲。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留官疲,地道東北人袱结。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像途凫,于是被迫代替她去往敵國和親垢夹。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容